DIRPATH="`dirname $0`"
LOGFILE="$DIRPATH/StopProcess.log"
echo "$0 start." >>$LOGFILE
function KillExistScript()
{
local _ProcessName=$1
local _ProcessPID=""
local _ProcessAllPID=""
local _Ret=0
if [ $# -ne 1 ]; then
echo "[$FUNCNAME($LINENO)]The number of parameter is error,you put:$#,you parameter: $@" >>$LOGFILE
return 1
fi
#记录进程自身PID
ProcessPID=$$
echo "[$FUNCNAME($LINENO)]Current ProcessName is $0 ProcessPID=$ProcessPID." >>$LOGFILE
echo "[$FUNCNAME($LINENO)]You want kill ProcessName is $_ProcessName." >>$LOGFILE
echo "==========" >>$LOGFILE
echo "`ps -ef | grep -w $_ProcessName| grep -v grep | grep -v $ProcessPID`" >>$LOGFILE
echo "==========" >>$LOGFILE
_ProcessAllPID=`ps -ef | grep -w "$_ProcessName" | grep -v "grep"| grep -v $ProcessPID| awk '{print $2}' `
#记录目录进程所有PID
echo "[$FUNCNAME($LINENO)]_ProcessAllPID=`echo $_ProcessAllPID`" >>$LOGFILE
if [ -n "$_ProcessAllPID" ]; then
echo "$_ProcessAllPID" |
while read _ProcessPID
do
if [ -z "$_ProcessPID" ]; then
break
else
#杀死进程
echo "[$FUNCNAME($LINENO)]Kill process $_ProcessName, PID is $_ProcessPID." >>$LOGFILE
kill -9 "$_ProcessPID" >/dev/null 2>&1
if [ $? -ne 0 ]; then
_Ret=1
echo "[$FUNCNAME($LINENO)]kill -9 $_ProcessPID failed." >>$LOGFILE
continue
fi
fi
done
fi
return $_Ret
}
if [ -z "$1" ]; then
echo "Usage:1. $0 processname
2. $0 scriptname.sh"
echo "The paremeter ProcessName is null." >>$LOGFILE
exit 1
else
ProcessName=`echo $1`
echo "The ProcessName is $ProcessName." >>$LOGFILE
fi
KillExistScript $ProcessName
iRet=$?
if [ $iRet -eq 0 ]; then
echo "KillExistScript $ProcessName succeed." >>$LOGFILE
fi
echo "$0 exit." >>$LOGFILE
exit $iRet