在 Ubuntu(以及所有 Linux 系统)中,僵尸进程(Zombie Process)指的是已经结束运行,但还没有被父进程回收的进程。
在 ps、top 等工具中,僵尸进程的状态显示为:
Z
全称是 Zombie。
例如:
ps aux | grep Z
可能会看到:
user 12345 0.0 0.0 0 0 ? Z 10:00 0:00 [process] <defunct>
Z 或 <defunct> 都表示这是一个僵尸进程。
wait() / waitpid() 回收子进程✅ 几乎不占资源
❗ 但会占用 PID
❌ 不能
因为:
kill -9 无效✅ 正确做法
父进程应调用:
wait(NULL);
或
waitpid(pid, &status, 0);
kill -9 父进程PID
init(或 systemd,PID 1)接管init 会自动 wait() 回收因为:
| 项目 | 说明 |
|---|---|
| 状态 | Z(Zombie) |
| 是否运行 | ❌ 已死亡 |
| 是否可 kill | ❌ 不可 |
| 是否占资源 | ❌ 几乎不占 |
| 解决方法 | 修复父进程或杀父进程 |
如果你愿意,我可以帮你:
ps 输出