你说的应该是 Linux 下的 “defunct(僵尸)进程”(常被误打成 deban / debian 僵尸进程)。僵尸进程本身不能直接 kill,正确做法如下:
ps -ef | grep defunct
# 或
ps -l
状态为 Z 的就是僵尸进程。
僵尸进程 已经死掉,只是还在进程表里等着父进程来“收尸”(调用 wait())。
所以:
kill -9 PID 没用找到僵尸的父进程 PPID:
ps -o pid,ppid,stat,cmd -p 僵尸PID
然后:
kill -CHLD 父进程PID
kill 父进程PID
# 若无效
kill -9 父进程PID
父进程死后:
wait() 回收 ✅一般不会,但如果:
只能:
# 把僵尸进程脱离终端(并不能真正消灭)
disown
只是不显示,进程仍在。
SIGCHLDwaitpid()systemd / supervisor 管理子进程如果你愿意,可以把:
ps -ef | grep defunct
的输出贴出来,我可以帮你判断 该杀哪个父进程。