在 Debian(以及所有类 Unix/Linux 系统)中,僵尸进程(zombie process)由它的父进程回收。
僵尸进程是已经结束运行,但其退出状态还没有被父进程读取(wait/waitpid)的进程。
它不再占用 CPU、内存等资源,只在内核中保留一个 task_struct(包含 PID、退出码等),状态为 Z。
直接父进程负责回收
父进程调用:
wait()
waitpid()
或使用 SIGCHLD 信号异步回收。
如果父进程:
wait,僵尸会立刻被清理wait,僵尸会一直存在,直到父进程退出如果父进程先于子进程死亡:
systemd(PID 1)✅ 所以:最终一定会被 PID 1 回收
wait() 子进程SIGCHLD 信号但未回收你不能“杀掉”僵尸进程(kill -9 无效)。
正确做法:
ps -o ppid= -p <僵尸PID>
kill <父进程PID>
Debian 中僵尸进程由父进程回收;父进程死了就由 PID 1(systemd)回收。
如果你有具体场景(比如某个服务产生大量僵尸),可以贴出来,我可以帮你分析代码或配置问题。