自动清理僵尸进程及STOP进程脚本

#!/bin/bash
echo "##############僵尸进程##############"
check=`ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'`
if [ -n "$check" ];then
    echo "发现僵尸进程!"
    for pid in `ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' |awk '{print $3}'`
    do
    `kill -9 $pid`
    done
    check1=`ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'`
                if [ -n "$check1" ];then
                        echo "未能杀掉僵尸进程,请选择是否杀死父进程!"
                       read -p "请输入y/n: " x
                fi
                if [ $x==y ]; then
                        echo "正在执行杀死父进程!"
                        for ppid in `ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' |awk '{print $2}'`
                        do
                                 `kill -9 $ppid`
                        done
                elif [ $x==n ]; then
                        break
                fi
else
    echo "未发现僵尸进程!"
fi
echo "##############STOP进程##############"
check_t=`ps -A -o stat,ppid,pid,cmd | grep -e '^[T]'`
if [ -n "$check_t" ];then
        echo "发现STOP进程!"
        for pidone in `ps aux |grep -w T |grep -v grep |awk '{print $2}'`
        do
    `ps -ef |grep $pidone |grep defunct |awk '{print "kill -9 " $2 " "$3}'`
    done
else
    echo "未发现STOP进程!"
fi

 

posted @ 2020-09-17 11:36  Zsecret  阅读(375)  评论(0编辑  收藏  举报