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

使用top之后发现有zombie进程

[复制链接]

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
发表于 2018-1-10 22:21:01 | 显示全部楼层 |阅读模式
使用top之后发现有zombie进程) o, Y/ A0 _7 H! t! x. |1 D
查看僵尸进程
4 @4 P6 o; B, w+ I, J% Sps -A -o stat,ppid,pid,cmd|grep -e "^[Zz]" $ O4 Z6 y1 l0 D# h- A6 L

+ x+ w& m+ N2 {, x4 q1 UZ     8120  8137 [sudo] <defunct>( E* H, f- T. q  a9 ~
杀掉僵尸进程7 c0 P/ _6 a, {% f! U7 g0 W4 B
kill -9 8120
/ c3 D* C4 V6 J% ]2 x5 x# d+ J! g0 _( z! i5 L3 g  n: E

1 L3 r9 `1 [: L! D8 U7 s  f* W# ^6 I

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

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

命令选项说明:

-A 参数列出所有进程3 {! R' J* w; E3 k6 g0 C3 e+ I3 ~
-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数: b8 `; Z1 c" U$ u. F
因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程

运行结果参考如下% v0 p# P! Z( H+ ~; A0 e5 _- ?
Z 12334 12339 /path/cmd
4 f2 c+ F) |8 d; h这时,我们可以使用 kill -HUP 12339来杀掉这个僵尸进程" _3 i* b% Q3 l) {
运行后,可以再次运行ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'来确认是否将僵尸进程杀死
$ R  ^6 Y  s1 ]6 ?* e  s如果kill 子进程的无效,可以尝试kill 其父进程来解决问题,例如上面例子父进程pid是 12334,那么我们就运行5 H; k: P+ U! W1 D, G
kill -HUP 12334来解决问题


, r9 c+ \# R( I

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
 楼主| 发表于 2019-6-5 18:09:11 | 显示全部楼层
解决方法:1 O5 w5 U) a5 o, f  Z

: v" K" I! W* h9 I  #ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"    //先查看具体进程:
2 h0 t! c& C% [- i0 u0 B* w  #kill -9 pid号         //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!)

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
 楼主| 发表于 2019-6-5 18:09:23 | 显示全部楼层
假若你的z进程比较多,可以编写个小小的脚本,下面是参与网上的
1 z- `: S" V2 h9 h; x4 }+ b; J
% h" G9 U7 u. K- @" l- \: J* A#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:45 , Processed in 0.015777 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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