在 CentOS(以及其他 Linux 系统) 中,僵尸进程(Zombie Process) 是一种特殊状态的进程。
僵尸进程 是指:
一个已经结束运行(退出),但其**父进程还没有回收它(wait)**的进程。
换句话说:
在 Linux 中:
wait() / waitpid() 来“收尸”示例:
fork();
// 子进程 exit
// 父进程不 wait
✅ 占用资源极少
❌ 占用 PID
⚠️ 大量僵尸进程可能导致 无法创建新进程
状态显示:
ps -l
看到 Z 状态:
S UID PID PPID C PRI NI STAT
Z 1000 1234 1200 0 80 0 Z
ps aux | grep Z
或:
top
看 Tasks: 1 zombie
❌ 不能
kill -9 <zombie_pid> # 无效
因为进程已经死了,kill 不了“死人”。
kill -9 父进程PID
父进程死后,僵尸进程会被 init(PID 1)接管并回收。
wait()signal(SIGCHLD, SIG_IGN)systemctl restart 服务名
✅ 少量是正常的 ❌ 大量的是异常
比如:
CentOS 中的僵尸进程是“死掉但没被父进程收尸的进程”,不占资源但占 PID,杀不掉,只能处理父进程或修代码。
如果你愿意,我可以:
ps 输出pstree 快速定位父进程