«

Linux 查看系统僵尸进程

指尖二进制 • 1 年前 • 846 次点击 • LINUX


使用top命令查看是否有僵尸进程

定位僵尸进程:

[root@node-1 ~]# ps -ef|grep -v grep|grep defunct

[root@node-1 ~]# ps -A -ostat,ppid,pid,cmd|grep -e '^[Zz]'
Z    2560522 2560748 [ansible-playboo] <defunct>
Z    2560522 2560750 [ansible-playboo] <defunct>
Z    2560522 2560756 [ansible-playboo] <defunct>
Z    2560522 2560766 [ansible-playboo] <defunct>
Z    2560522 2560769 [ansible-playboo] <defunct>
Z    2560522 2560775 [ansible-playboo] <defunct>
Z    2560522 2560782 [ansible-playboo] <defunct>
Z    2560522 2560791 [ansible-playboo] <defunct>
Z    2560522 2560800 [ansible-playboo] <defunct>
Z    2560522 2560816 [ansible-playboo] <defunct>
Z    2560522 2560822 [ansible-playboo] <defunct>
Z    2560522 2560826 [ansible-playboo] <defunct>
Z    2560522 2560831 [ansible-playboo] <defunct>

杀死僵尸进程并检查:
使用kill -hup pid杀死进程
使用kill -hup ppid杀死父进程,第一种不适用的情况下使用此方法
kill -hup 3457 # 通过pid杀死进程# orkill -hup 3425 # 通过ppid杀死进程

[root@node-1 ~]# kill -hup 2560522
[root@node-1 ~]# ps -A -ostat,ppid,pid,cmd|grep -e '^[Zz]'|wc -l
0
[root@node-1 ~]# ps -A -ostat,ppid,pid,cmd|grep -e '^[Zz]'

参数解读:
ps -A -ostat,ppid,pid,cmd|grep -e '^[Zz]'
-A 参数列出所有进程
-o 自定义输出字段 stat(状态)、ppid(进程父id)、pid(进程id)、cmd(命令)
因为状态为z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程

还没收到回复