centos

centos僵尸进程清理脚本有哪些

小樊
46
2025-08-06 18:13:29
栏目: 智能运维

以下是CentOS清理僵尸进程的常用脚本及方法:

  1. 基础回收脚本:通过发送SIGCHLD信号通知父进程回收资源。

    #!/bin/bash  
    zombie_pids=$(ps -eo pid,state,ppid,cmd --no-headers | awk '$2 == "Z" {print $1}')  
    for pid in $zombie_pids; do  
        ppid=$(ps -o ppid= -p $pid)  
        kill -s SIGCHLD $ppid  
    done  
    
  2. 强制终止父进程脚本:若父进程无响应,强制终止以回收僵尸进程。

    #!/bin/bash  
    zombie_pids=$(ps -eo pid,state,ppid,cmd --no-headers | awk '$2 == "Z" {print $1}')  
    for pid in $zombie_pids; do  
        ppid=$(ps -o ppid= -p $pid)  
        kill -9 $ppid  
    done  
    
  3. 定时清理脚本:结合cron定时执行,例如每30分钟检查一次。

    #!/bin/bash  
    if [ $(ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' | wc -l) -gt 0 ]; then  
        ps -A -ostat,ppid,pid,cmd | grep -e '[Zz]' | awk '{print $2}' | xargs kill -HUP  
    fi  
    

    使用方式:保存为zombie_killer.sh,赋予执行权限后添加到crontab

    crontab -e  
    */30 * * * * /path/to/zombie_killer.sh  
    

注意:优先尝试正常回收(发送SIGCHLD),强制终止(kill -9)可能导致数据丢失,需谨慎使用。

0
看了该问题的人还看了