Linux进程管理之Shell脚本实现根据进程名杀死进程

2,173 阅读1分钟

文章目录

  1.shell脚本源码如下:
  2.效果如图:
  3.注:解释一下


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参数迅速中断.