简短结论:Debian 上的僵尸进程(zombie)本身不会“自动消失”,但会在父进程处理它或父进程退出后被回收,从而消失。
下面详细解释一下。
僵尸进程是已经结束运行,但还没有被父进程回收(wait)的进程。
Z(zombie)wait() / waitpid()wait() 子进程在 Debian 中,现代系统通常是
systemd作为 PID 1。
这种情况下,僵尸进程会一直存在,直到:
ps aux | grep 'Z'
或:
top
# 看 Tasks: xx zombie
⚠️ 不能直接 kill 僵尸进程
kill -9 <zombie_pid> # ❌ 无效
ps -o ppid= -p <zombie_pid> # 查看父进程
kill <父进程PID>
SIGCHLDwait() / waitpid()Debian 上的僵尸进程不会自动消失,但在父进程回收或父进程退出后会被 init 回收并消失。
如果你愿意,可以把 ps aux 输出贴出来,我可以帮你判断具体该不该处理、怎么处理。