在 Ubuntu(以及其他 Linux 发行版)里,僵尸进程(Zombie / 僵死进程)是已经结束、但父进程还没回收它状态的进程。下面从怎么看、怎么判断、怎么处理三个方面说明。
ps 查看ps aux | grep Z
或只看状态列:
ps -ef -o pid,ppid,stat,cmd | awk '$3=="Z"'
僵尸进程的特征:
STAT = Z
例如:
user 1234 1200 0 10:00 ? 00:00:00 [process] <defunct>
top / htoptop
看最上面一行:
Tasks: 210 total, 1 zombie
htop
僵尸进程通常显示为灰色或 <defunct>
ps aux | awk '$8=="Z"' | wc -l
僵尸进程不占 CPU、不占内存,只保留:
⚠️ 僵尸进程不能被 kill 掉
ps -o ppid= -p <僵尸PID>
ps -p <PPID> -o pid,cmd
kill -TERM <PPID>
或kill -9 <PPID>
父进程死后,僵尸会被
init/systemd接管并回收
init / systemd(PID 1)常见原因:
僵尸进程看
ps的 STAT=Z,不能 kill,只能杀父进程或修程序。
如果你愿意,可以把你的:
ps aux | grep Ztop 截图发出来,我可以帮你具体分析是哪个程序在制造僵尸进程。