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

使用top之后发现有zombie进程

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-1-10 22:21:01 | 显示全部楼层 |阅读模式
使用top之后发现有zombie进程
0 _* ~8 `: @0 c( h查看僵尸进程3 x! w! W3 `+ @7 ^  \
ps -A -o stat,ppid,pid,cmd|grep -e "^[Zz]" 3 c( n9 P  c8 T+ E& C! H- k

  U% Q  D0 L( V8 Q4 iZ     8120  8137 [sudo] <defunct>8 F$ O8 Z1 k! e0 [- D% G
杀掉僵尸进程
( Z. K; f" d/ b5 q& C$ { kill -9 8120
; D9 Z, L5 E! W. W0 X' M+ g( R7 V- J2 P, P  e- G" G: P9 @

& g' S: K5 [# ]1 D  f1 W/ m

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

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

命令选项说明:

-A 参数列出所有进程8 W6 z5 [8 x2 e1 R+ t- @
-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数- I. E( B# ^3 Q# R( l6 {
因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程

运行结果参考如下
5 M% ]# a- b+ o+ ]7 u$ ]. A9 L  vZ 12334 12339 /path/cmd* k  _! P9 @/ q( I, N$ F+ Q
这时,我们可以使用 kill -HUP 12339来杀掉这个僵尸进程8 P; ^1 ]* P' K
运行后,可以再次运行ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'来确认是否将僵尸进程杀死5 ~* _: f- ?$ f3 t# x7 l
如果kill 子进程的无效,可以尝试kill 其父进程来解决问题,例如上面例子父进程pid是 12334,那么我们就运行
, j( q9 o1 z+ n' v$ t) nkill -HUP 12334来解决问题

( W6 z, D/ T) \6 T

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2019-6-5 18:09:11 | 显示全部楼层
解决方法:
5 c9 f& d2 u1 d' [, u  k" Z- M- y5 Q; p$ B2 ]
  #ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"    //先查看具体进程:
% V9 A; t. ]' j: E5 ~  t  #kill -9 pid号         //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!)

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2019-6-5 18:09:23 | 显示全部楼层
假若你的z进程比较多,可以编写个小小的脚本,下面是参与网上的/ }2 C( m- l& i" U4 b4 a4 H2 C+ u
, |. Z0 A: D' f
#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:39 , Processed in 0.020146 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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