在 Ubuntu(以及大多数 Linux 发行版)中,可以通过以下几种方式查看僵尸进程(Zombie Process)。
僵尸进程是已经结束但还没有被父进程回收(wait)的进程,状态为 Z。
它们不占用 CPU 或内存,但会占用 PID,数量过多可能导致无法创建新进程。
ps 命令(最常用)ps aux | grep 'Z'
或更直观一点:
ps -eo pid,ppid,stat,cmd | grep 'Z'
输出示例:
1234 1000 Z [test] <defunct>
字段说明:
Z:僵尸状态<defunct>:表示进程已失效ppid:父进程 ID(关键)toptop
在 top 中查看:
Tasks 中如果有:1 zombie
说明系统中有僵尸进程
然后按:
f
进入字段选择,确保 S(状态)字段已显示,查看状态为 Z 的进程。
htop(更直观,需安装)sudo apt install htop
htop
在 htop 中:
Z 的进程<defunct>/proc 查看(高级)ls /proc | grep '^[0-9]'
然后查看某个进程状态:
cat /proc/<pid>/status | grep State
如果是:
State: Z (zombie)
⚠️ 僵尸进程不能直接 kill
ps -eo pid,ppid,stat,cmd | grep Z
ps -p <ppid> -o pid,ppid,cmd
sudo systemctl restart 服务名
sudo kill -9 <ppid>
wait() / waitpid()# 查看僵尸进程
ps -eo pid,ppid,stat,cmd | grep Z
# top 中查看
top
# 清理方式
重启父进程
如果你愿意,可以把 ps -eo pid,ppid,stat,cmd | grep Z 的输出贴出来,我可以帮你分析是哪个服务或程序导致的僵尸进程。