shell指令碼實現關閉指定程式名的程序

2021-08-06 07:21:49 字數 2435 閱讀 8242

shell指令碼實現關閉指定程式名的程序

1、  基礎篇

在linux系統下,我們進行程式除錯或者是進行應用程式公升級時,經常需要先對我們的目標程式進行kill關閉。此時最基礎的辦法就是先查找到目標程序的pid,然後再執行kill命令去關閉目標程序。

接著直接執行kill -9 15889就可以關閉掉此svn的程序了。

2、  實踐篇

從上面可以看出,要實現依據程序名來進行程序的關閉其實只要將上述查詢和kill的兩步合併起來實現即可。

1)  command命令執行

ps -ef | grep procedure_name | grep -v grep | awk '' | xargs kill -9

上面指令中的procedure_name 即為所有關閉的程序名

2)  shell指令碼執行

下面採用乙個通用的shell指令碼方式,來實現此功能,執行下述指令碼

./close_p.sh  rocedure_name

注意:因指令碼執行時,指令碼自身的程序名中會帶有待關閉的程序名,需在指令碼編寫時進行相應的處理。

close_p.sh指令碼的實現比較簡單,內容如下:

#!/bin/bash

echo "***************************"

echo "close the progress by name!"

echo "eg: ./close_p.sh progressname"

echo "***************************"

echo

#echo "pid of this script: $$"

#echo "ppid of this script: $ppid"

function msgshow()

in            parmmiss)

echo "missing process name to close!"

;;nopross)

echo "no such process[$2]!"

;;multipross)

echo "there are too many process contains name[$2]"

;;*)

echo "default case!"

;;esac

exit 1;

fi }function pidfind()

' | wc -l`;

if [ $ -gt 1 ] ; then

msgshow multipross $1;

elif [ $ -le 0 ] ; then

msgshow nopross $1;

else

pid=`ps -ef | grep $1 | grep -v "grep" | grep -v ".sh" | awk ''` ;

echo "find the pid of this progress!--- process:$1 pid=[$] ";

firead -p "are you sure you want to close this progress[y/n]: "

if [ $reply = "y" ] || [ $reply = "yes" ] ; then

echo "kill the process $1 ...";

kill -9  $;

echo "kill -9 $ done!";

else

echo "confirmation of canceling,exit!";

exit 1

fi#if we use return ,the return val must between 0 and 255

}if [ $# -lt 1 ] ; then

msgshow parmmiss;

else

pidfind $1;

fi

3、  參考篇

有關shell指令碼知識可以參考:《shell指令碼學習指南》

有關awk知識可以參考:《sed與awk》

注:若在拷貝上述.sh檔案至linux後,需要注意編碼格式的問題。

因為指令碼在windows下建立編輯然後上傳到linux系統的,所以是dos格式的,而linux卻是只能執行格式為unix格式的指令碼

在linux中採用vim close_p.sh,執行set ff檢視當前檔案的格式,若為doc格式的話執行將會出現類似的錯誤:

[root@localhost work]# ./close_p.sh

-bash: ./close_p.sh: /bin/bash^m: bad interpreter: no such file or directory

此時我們需要執行set ff=unix,然後再次set ff檢測檔案格式是否已經修改為unix格式,儲存檔案後並可以正常執行了

shell指令碼實現程式重啟

最近做的ipc端hls推流不穩定偶爾要死機,而雲伺服器又希望能隨時連上ipc。在ipc端有沒有supervisor這種工具,就需要自己想下怎麼然異常退出的程式重啟起來。經過查閱網路資料,通過shell即可實現。bin sh help 引數範圍檢查 if 1 then help fi 檢查程序例項是否...

Shell指令碼實現關閉多餘的tty終端

今天給公司新部署伺服器進行優化,發現了tty終端居然有6個,為了節省點記憶體,決定只留乙個tty終端,其他的都關閉掉,但centos6跟c程式設計客棧entos5的終端關閉方法完全變了,而且我也比較懶,不想一台一台的設定,寫了下面這個指令碼來節省時間.系統 centos 6 關閉tty終端指令碼 c...

shell指令碼程式

學習shell指令碼是需要經過大量的練習來鞏固語法的 就像我們當初學習c語言是一樣的 下面為自己在用shell編寫的指令碼程式。1.求1.100所有數的總和 程式如下 bin bash i 0sum 0 for i 100 i do let sum i done echo sum最終輸出結果為505...