Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33928
  • 博文数量: 22
  • 博客积分: 301
  • 博客等级: 二等列兵
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-12 15:30
文章分类

全部博文(22)

文章存档

2019年(4)

2014年(1)

2013年(7)

2011年(8)

2010年(2)

分类: LINUX

2013-12-15 18:51:02

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

阅读(730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~