一、前言
Linux 进程异常分为僵尸进程、孤儿进程,是服务器卡顿、资源泄露、服务异常的常见隐形原因。面试高频、运维必查。
二、基本概念
1. 孤儿进程
父进程退出,子进程还在运行
会被init/systemd(PID1)收养
无害,系统自动回收,无需处理
2. 僵尸进程(重点、有害)
子进程结束,父进程未调用 wait 回收子进程退出状态
进程资源不释放、PCB保留、占用进程号
大量僵尸进程会导致系统无法新建进程、服务挂掉
三、查看僵尸进程
top # 查看 Z 状态进程 ps -ef | grep defunct状态为 Z 即为僵尸进程
四、解决僵尸进程
1. 临时解决(最快)
找到僵尸进程的父进程,重启父进程
ps -ef | grep defunct kill -9 父进程PID2. 彻底根治
开发代码处理子进程退出信号
脚本增加进程回收机制
避免死循环创建子进程不回收
五、总结区别
孤儿进程:无害,系统自动接管
僵尸进程:有害,堆积会炸机,必须清理