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

使用top之后发现有zombie进程

[复制链接]

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
发表于 2018-1-10 22:21:01 | 显示全部楼层 |阅读模式
使用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

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
 楼主| 发表于 2019-6-5 18:09:11 | 显示全部楼层
解决方法:# [9 D7 S4 a5 M, o3 g
( d- z5 P3 r' \# `9 x6 r- S
  #ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"    //先查看具体进程:
& i6 J; ?7 E* `: Z9 Z  #kill -9 pid号         //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!)

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
 楼主| 发表于 2019-6-5 18:09:23 | 显示全部楼层
假若你的z进程比较多,可以编写个小小的脚本,下面是参与网上的4 x1 r, F$ L2 a5 V, ?- ~
$ K$ b* j8 ]: y/ [. B
#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 06:43 , Processed in 0.022871 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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