找回密码
 注册
查看: 4583|回复: 2

使用top之后发现有zombie进程

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-1-10 22:21:01 | 显示全部楼层 |阅读模式
使用top之后发现有zombie进程; U: _, u% l: y; b  U5 c& H
查看僵尸进程* l: G, F" I" ]
ps -A -o stat,ppid,pid,cmd|grep -e "^[Zz]" / @9 T3 ~" B" d) a) c

0 C" r' x+ J8 a, P6 }Z     8120  8137 [sudo] <defunct>
0 f8 i7 r! o4 E0 b8 K杀掉僵尸进程
3 f8 X! T4 q2 S. C; m" ] kill -9 8120/ t5 e: }% j2 }  c
, q3 v4 `2 ^  w" r4 y/ L
! y- f9 U7 F* Z

可以用ps和grep命令寻找僵尸进程

ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

命令选项说明:

-A 参数列出所有进程
, ]4 n" Y+ m4 L# n( }& O* F" {* B-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数; Y1 r8 h" x% a( J5 p2 c
因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程

运行结果参考如下
; i  P/ B9 H" y% U# s' xZ 12334 12339 /path/cmd4 w- z0 e6 {+ Q! s
这时,我们可以使用 kill -HUP 12339来杀掉这个僵尸进程
% Q7 u3 V: e5 `% `, K. D( V运行后,可以再次运行ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'来确认是否将僵尸进程杀死3 F" T- Q: s+ A& o2 ^: X
如果kill 子进程的无效,可以尝试kill 其父进程来解决问题,例如上面例子父进程pid是 12334,那么我们就运行
  N3 J  c9 S& e  Y+ Dkill -HUP 12334来解决问题


, L1 I8 ?" M7 f# P

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2019-6-5 18:09:11 | 显示全部楼层
解决方法:
" }$ K2 r9 ~2 S+ }" X2 ~2 }; Y, [) ~7 r2 U7 `4 }
  #ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"    //先查看具体进程:0 w  W1 z4 _, g& i6 E
  #kill -9 pid号         //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!)

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2019-6-5 18:09:23 | 显示全部楼层
假若你的z进程比较多,可以编写个小小的脚本,下面是参与网上的
% ]: u5 [- t& \$ q6 N
: ^9 V  `0 g+ n, w9 N$ G; H#ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 05:33 , Processed in 0.023080 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表