如何在Linux系统中查找已终止的僵尸进程及其对应进程ID
Linux系统查询僵尸进程PID的方法
僵尸进程的进程状态标识为Z,可通过以下几种方式快速获取对应的进程ID:
方法1:使用ps命令直接筛选(最常用)
- 仅输出僵尸进程的PID:
ps aux | awk '$8=="Z" {print $2}'
该命令中ps aux会输出系统全量进程信息,第8列为进程状态字段,筛选状态为Z的条目后输出第2列的PID值。
- 如果需要同时查看僵尸进程对应的父进程ID、启动命令方便后续排查,使用以下命令:
ps -eo stat,ppid,pid,cmd | grep -e '^[Zz]'
输出结果的第二列为父进程PID、第三列为僵尸进程PID。
方法2:使用top命令实时查看
- 执行
top命令后,头部Tasks行会直接统计当前系统的僵尸进程总数 - 如需查看具体的僵尸进程PID,依次按
z开启高亮显示、按o后输入过滤规则STAT=Z,界面会仅保留僵尸进程条目,第一列即为对应的PID。
方法3:遍历/proc文件系统查询(适合脚本自动化场景)
直接读取内核暴露的进程状态文件获取结果,准确度更高:
for p in /proc/[0-9]*; do grep -q 'State:\tZ (zombie)' $p/status 2>/dev/null && echo ${p##*/}; done
该命令会遍历所有进程的status文件,筛选出状态为僵尸的进程,直接输出对应PID。
注意:僵尸进程已经完成运行退出,无法通过kill命令直接清理。通常父进程退出后,僵尸进程会被init进程自动回收;如果僵尸进程长期存在,需要对其对应的父进程进行处理。
内容的提问来源于stack exchange,提问作者Hamdan Hejazi
相关产品推荐
相关产品推荐

