#!/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