最近更新时间:2025-12-30 11:21:16
在Linux系统运维工作中,僵尸进程(Zombie Process)是一个常见但容易被忽视的问题。大量僵尸进程会占用系统有限的进程号资源,最终可能导致系统无法创建新的进程,影响正常服务。本文将从实战角度出发,深入探讨僵尸进程的发现、排查方法和预防策略。
当系统出现运行缓慢或无法创建新进程时,应检查是否存在僵尸进程。具体操作如下:
执行top,查看进程,如下图所示,当前系统中存在 5 个僵尸进程。
执行如下命令,观察发现,5个僵尸进程,都是由fast_zombie程序创建的。所有僵尸进程都处于Z状态(僵尸状态),由 root用户运行。
ps aux | awk '$8=="Z" {print $0}'根据上一步输出结果,以第一个僵尸进程为例,执行如下命令:
PARENT_PID=$(ps -o ppid= -p 146485) # 使用第一个僵尸进程如上所示,父进程 ./fast_zombie已经终止。
针对父进程已终止的情况,标准处理方案是向init进程发送SIGCHLD信号。
kill -s SIGCHLD 1 变量PARENT_PID为空值。
僵尸进程已被 init 进程(PID=1)接管。
再次执行top,结果如下,发现僵尸进程为0。
纯净模式
