在 Debian(以及其他 Linux 发行版)中,检测**僵尸进程(Zombie / defunct 进程)**通常可以通过以下几种方式:
ps 命令查看僵尸进程ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
或更常见写法:
ps aux | grep ' Z '
ps -eo pid,ppid,stat,cmd | awk '$3 ~ /Z/'
说明:
Z 或 Z+ 表示僵尸状态PPID 是父进程 IDtop / htoptop
在任务区查看:
Tasks: 210 total, 1 running, 208 sleeping, 0 stopped, 1 zombie
如果 zombie > 0,说明存在僵尸进程。
sudo apt install htop
htop
Z 的即为僵尸进程/proc 检查(进阶)for p in /proc/[0-9]*; do
if [ "$(cat $p/status 2>/dev/null | awk '/State:/ {print $2}')" = "Z" ]; then
echo "Zombie: $p"
fi
done
ps aux | awk '$8 ~ /Z/ {print $2}' | wc -l
或:
ps -e -o stat | grep -c Z
⚠️ 僵尸进程不能被 kill 直接杀死
kill -9 父进程PID
(父进程退出后,僵尸进程会被 init / systemd 回收)
systemctl restart 服务名
wait() / waitpid()如果你愿意,可以贴出:
ps 或 top 的输出我可以帮你具体分析是哪一个程序产生了僵尸进程。