在 Debian(以及大多数 Linux 发行版)中,可以通过以下几种方式查看僵尸进程(Zombie Process)。
僵尸进程的状态是 Z,表示进程已经结束,但父进程还没有调用 wait() 回收它的资源。
僵尸进程不占用 CPU / 内存,但会占用 PID。
ps 查看僵尸进程(最常用)ps aux | grep 'Z'
或更直观一点:
ps -eo pid,ppid,stat,cmd | grep 'Z'
1234 1000 Z [zombie_process] <defunct>
字段说明:
Z:僵尸状态<defunct>:已失效进程PPID:父进程 ID(关键)top 或 htoptop
在 top 中:
f → 选择 S(状态)显示Z 的就是僵尸进程顶部也会显示:
Tasks: 95 total, 1 zombie
sudo apt install htop
htop
ZF4Zps aux | awk '$8=="Z" { print $2 }' | wc -l
或者:
ps -eo stat | grep -c Z
⚠️ 僵尸进程不能直接 kill
ps -eo pid,ppid,stat,cmd | grep Z
kill -9 父进程PID
父进程退出后,僵尸进程会被 init(或 systemd)接管并清理。
SIGCHLD| 方法 | 命令 |
|---|---|
| 查看僵尸进程 | `ps -eo pid,ppid,stat,cmd |
| 实时查看 | top / htop |
| 统计数量 | `ps -eo stat |
| 清理 | 杀父进程 |
如果你愿意,可以把 ps 输出贴出来,我可以帮你分析是哪个程序导致的僵尸进程。