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...