#!/bin/sh
NAME=$1
if [ -z $NAME ]
then
echo "error: no parameter"
fi
i=0
j=0
for ALLNAME in `ps -A | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $4" "$1}'`
do
while [ $i -eq 0 ]
do
if [ $j -eq 1 ]
then
PID=`expr $ALLNAME`
if [ $PID -lt "1024" ]
then
read -p "kill: the pid: $PID is less than 1024, want to kill ? [y/n]" var
case $var in
y | Y)
kill $ALLNAME
j=0
break
;;
n | N)
j=0
break
;;
*)
echo "error:invalid input,try again"
continue
;;
esac
fi
kill $ALLNAME
if [ $? -eq 0 ]
then
echo "Pid: $ALLNAME Killed"
fi
j=0
break
elif [ $j -eq 2 ]
then
j=0
break
fi
read -p "kill: want to kill process: '$ALLNAME' [y/n]" var
case $var in
y | Y)
i=1
j=1
;;
n | N)
i=1
j=2
;;
*)
echo "error:invalid input,try again"
;;
esac
done
i=0
done
if [ -z "$ALLNAME" ]
then
echo "warning: process: '$1' does not exist !"
fi
例子:
1. 准备杀的进程
2.执行脚本,脚本参数是 etd
3.kill满足字串是etd的所有进程前进行询问
4.1.选择y或者Y则kill etdaemon进程
4.2.选择n或者N则放弃kill
4.3.输入非 y,Y,n,N则要求用户重新尝试
tip: 加入询问代码的目的是 防止误杀进程,特别是Pid小于1025的进程