Linux進程管理之Shell腳本實現根據進程名殺死進程

文章目錄

  1.shell腳本源碼以下:
  2.效果如圖:
  3.注:解釋一下linux


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
複製代碼

解析:shell

  • 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 -9bash

參數9是強制中斷,參數15是發送指令給進程使其正常中斷。ui

程序正常運行而且有重要數據的,我建議正常請求終端。若是肯定沒有什麼重要數據,或者趕時間的,就能夠使用-9參數迅速中斷.spa

相關文章
相關標籤/搜索