在 Ubuntu(以及所有 Linux 系统)里,僵尸进程(Zombie Process)其实不是一个“坏事进程”,而是进程的一种特殊状态。
僵尸进程 = 已经死掉的进程,但还在进程表里留了个“尸体”没被回收。
在 Linux 中:
exit())wait() / waitpid() 来收尸这就是 Z 状态(zombie)
ps aux | grep Z
或者:
ps -l
看到 STAT 是 Z 的就是僵尸。
✅ 一般情况:几乎没危害
❌ 但如果有大量僵尸:
常见原因:
fork();
// 父进程不 wait()
init(PID 1)接管并回收比如:
⚠️ 你不能直接 kill 僵尸进程
kill -9 <zombie_pid> # 没用
ps -o ppid= -p <zombie_pid>
kill -9 <父进程PID>
父进程死了 → init 收尸 → 僵尸消失
如果你是开发者:
wait(NULL);
或
os.waitpid(pid, 0)
systemctl restart xxx
signal(SIGCHLD, SIG_IGN)(简单粗暴)Ubuntu 的僵尸进程不是病毒,也不是Bug,而是父进程懒得收尸留下的“尸体”。
如果你愿意,可以把 ps aux 或 top 的输出贴出来,我帮你看看是不是真有问题。