一、常用命令行工具监控与检测僵尸进程
ps aux | grep 'Z'(列出所有状态为“Z”的进程)或ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'(显示进程状态、父进程ID、进程ID及命令行,更直观)。状态字段中的“Z”是僵尸进程的核心标识。top后,按小写“z”键可将僵尸进程过滤并显示在最顶部,或在“%CPU(s)”下方查看“Z”字段统计的僵尸进程数量。sudo yum install htop安装,运行后僵尸进程会以灰色标记,并在状态栏清晰显示“Z”,支持鼠标交互和快捷键操作。pstree -p | grep 'Z'会显示所有僵尸进程及其父进程ID,帮助快速找到问题根源。cat /proc/[PID]/status | grep 'Z'(替换[PID]为具体进程ID),若输出包含“Z”则该进程为僵尸状态。二、专用监控工具部署
sudo yum install monit;配置文件编辑(/etc/monit/monitrc),添加如下内容:check process zombie_processes with pidfile /var/run/zombie.pid
start program = "/bin/true"
stop program = "/bin/kill -9 `cat /var/run/zombie.pid`"
if status != 0 then alert
启动服务:sudo systemctl start monit && sudo systemctl enable monit,即可实时监控僵尸进程状态。zabbix_agentd.conf中添加UserParameter=zombie.count,ps -A -ostat | grep -c 'Z')采集数据,再创建触发器(如“僵尸进程数量>5时触发告警”),实现自动化监控。三、自动化监控脚本实现
通过Shell脚本定期检查僵尸进程数量,并在超过阈值时发送通知或清理。示例脚本(check_zombies.sh):
#!/bin/bash
ZOMBIE_THRESHOLD=5 # 僵尸进程阈值
ZOMBIE_COUNT=$(ps -A -ostat | grep -c 'Z') # 统计僵尸进程数量
if [ $ZOMBIE_COUNT -gt $ZOMBIE_THRESHOLD ]; then
echo "$(date): 警告!系统存在${ZOMBIE_COUNT}个僵尸进程,超过阈值${ZOMBIE_THRESHOLD}!" >> /var/log/zombie.log
# 可扩展邮件通知(需配置mailx):echo "僵尸进程告警" | mail -s "CentOS僵尸进程预警" admin@example.com
fi
设置定时任务(crontab -e),每10分钟执行一次:
*/10 * * * * /path/to/check_zombies.sh
该脚本可定期记录僵尸进程数量,便于后续分析趋势。