Linux 根据进程名kill进程

#!/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. 准备杀的进程

        150632_xTE1_1436085.png

        2.执行脚本,脚本参数是 etd 

        151350_FobL_1436085.png

        3.kill满足字串是etd的所有进程前进行询问

        151505_BcOJ_1436085.png

        4.1.选择y或者Y则kill etdaemon进程

        4.2.选择n或者N则放弃kill

        4.3.输入非 y,Y,n,N则要求用户重新尝试

           154108_g6CM_1436085.png     

        tip: 加入询问代码的目的是 防止误杀进程,特别是Pid小于1025的进程        

        

转载于:https://my.oschina.net/u/1436085/blog/598868

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值