使用top之后发现有zombie进程
: z6 [ [2 K2 E7 H/ Z/ j查看僵尸进程
7 U% W4 l$ M5 K" d6 Rps -A -o stat,ppid,pid,cmd|grep -e "^[Zz]" 8 ~) l, b3 S; m5 j9 U' E# O
* p5 j) c" a r* x9 g2 YZ 8120 8137 [sudo] <defunct>
: K) T5 q1 R! Z6 A) @+ F g- i杀掉僵尸进程
2 y/ B( K4 V) }8 B4 e! q kill -9 8120/ Q; ]$ I* J/ s( l6 t" D
: ?8 K5 }* r- S/ K
) h1 e7 I- Q& C w- K可以用ps和grep命令寻找僵尸进程 ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令选项说明: -A 参数列出所有进程- j/ Z* k: y5 @5 |' m9 m
-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数
8 x: h5 k1 A, B# h7 z9 l" Z因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程 运行结果参考如下- f- ]9 I6 s" Z
Z 12334 12339 /path/cmd
) L8 N( w+ N, J" p2 {- F0 S" M# v这时,我们可以使用 kill -HUP 12339来杀掉这个僵尸进程/ l. O2 k* `8 U0 j' ?9 m+ f
运行后,可以再次运行ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'来确认是否将僵尸进程杀死" j1 L; W/ O) N5 w9 j$ S
如果kill 子进程的无效,可以尝试kill 其父进程来解决问题,例如上面例子父进程pid是 12334,那么我们就运行
) Y0 ^% y" E' L3 h0 q3 |. j/ xkill -HUP 12334来解决问题
; Q9 [8 ^( `% k0 X) G7 X9 h |