1. shell脚本源码如下:
#!/bin/bash
#根据进程名杀死进程
if [ $# -lt 1 ]x
then
echo "缺少参数:pro_name"
exit 1
fi
PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
echo "Killed the $1 process [ $i ]"
kill -15 $i
done
解析:
- grep -v grep命令的作用是把grep进程顾虑掉,但是我这里并没有起效。
- 把命令输出值赋值给变量PROCESS
PROCESS=`ps -ef | grep $1 | grep -v grep | grep -v PPID | awk '{ print $2}'`
- awk '{print $2} 命令是把一行文字按照空格分成一个数组的形式,然后通过’$1’ ‘$2’等从数组中取值。比如"chen du xiu" 通过awk分词以后,‘$1’对应"chen",’$2’对应"du",’$3’对应"xiu"。这里使用的是 ‘$2’ ,取的是PID。
2. 效果如图:
脚本等同于以下linux命令
$ ps -ef | grep pro_name | grep -v grep | awk '{print $2}' | xargs kill -15
3. 注:解释一下
可能有人有疑问,我为什么用 kill -15 ,而不用 kill -9。
参数9是强制中断,参数15是发送指令给进程使其正常中断。
程序正常运行并且有重要数据的,我建议正常请求终端。如果确定没有什么重要数据,或者赶时间的,就可以使用-9参数迅速中断.