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