在 Debian(以及其他 Linux 发行版)中,查看僵尸进程(zombie / Z 状态进程)数量有几种常用方法:
ps 命令ps aux | awk '$8 ~ /Z/ {print $0}'
说明:
ps aux 显示所有进程$8 是进程状态字段Z 表示僵尸进程(zombie)只看数量:
ps aux | awk '$8 ~ /Z/' | wc -l
top / htoptop
在顶部信息中能看到类似:
Tasks: 210 total, 1 running, 208 sleeping, 0 stopped, 1 zombie
其中 zombie 就是僵尸进程数。
sudo apt install htop
htop
在上方状态栏也会显示 zombie 数量。
/proc 统计(脚本/程序常用)grep -c '^State:.*zombie' /proc/[0-9]*/status
或:
for p in /proc/[0-9]*; do
if grep -q 'State:.*Z' "$p/status" 2>/dev/null; then
echo "$p"
fi
done | wc -l
vmstatvmstat
输出中有一列:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 123456 78901 23456 0 0 1 2 34 56 1 0 99 0 0
(不直接显示 zombie,不如前几种直观)
wait()kill -9 父进程(会让 init 接管并回收)如果你愿意,可以贴一下 ps aux | grep Z 的输出,我可以帮你判断是哪个进程在产生僵尸。