在 Debian(以及所有 Linux 系统)里,僵尸进程(zombie / defunct)本身是不能被直接 kill 掉的,因为它已经结束了,只是还在进程表里等待父进程回收。
ps -l
或
ps -ef | grep defunct
如果 STAT 是 Z,就是僵尸进程。
僵尸进程由父进程负责回收:
ps -o ppid= -p 僵尸PID
kill -TERM 父进程PID
# 不行就
kill -9 父进程PID
父进程死后,僵尸会被 init/systemd(PID 1)接管并自动清理。
如果是你自己写的服务:
SIGCHLDwait() / waitpid()对于第三方程序,通常只能重启服务:
systemctl restart 服务名
kill -9 僵尸PID ❌(无效)killall zombie ❌(不存在)systemctl status 服务名
journalctl -u 服务名
通常是:
僵尸进程不能直接杀,只能杀父进程或修复父进程代码。
如果你愿意,可以把 ps aux 或 top 的输出贴出来,我可以帮你具体看是哪个进程在“生僵尸”。