1. 程式人生 > >linux下通過指令碼監控程式執行

linux下通過指令碼監控程式執行

shanzhizi大神的,寫的很實用,謝謝大神。

應用程式執行過程中,任何人都無法保證它永遠不死定,因此自動重啟就十分必要。以下是自動重啟的shell指令碼實現方法,shell指令碼來自網路。
假定需要實現重啟的程式名為 test ,我們這裡通過判斷程序數目來判斷程式是否正常。
ps -ef | grep “1"|grepv"grep"|wcl1 是要監控的程序名稱(本例中為 test的程序 ),這個命令將返回該程序的程序個數。指令碼根據程序數來決定下一步的操作。通過一個死迴圈,每隔 1 秒檢查一次系統中的指定程式的程序數。

程式碼如下:

#!/bin/sh

#------------------------------------------------------------------------------
# 函式: CheckProcess # 功能: 檢查一個程序是否存在 # 引數: $1 --- 要檢查的程序名稱 # 返回: 如果存在返回0, 否則返回1. #------------------------------------------------------------------------------ CheckProcess() { # 檢查輸入的引數是否有效 if [ "$1" = "" ]; then return 1 fi #$PROCESS_NUM獲取指定程序名的數目,為1返回0,表示正常,不為1返回1,表示有錯誤,需要重新啟動 PROCESS_NUM=`ps -ef | grep "$1
"
| grep -v "grep" | wc -l` if [ $PROCESS_NUM -eq 1 ]; then return 0 else return 1 fi } # 檢查test例項是否已經存在 while [ 1 ] ; do CheckProcess "test" CheckQQ_RET=$? if [ $CheckQQ_RET -eq 1 ]; then # 殺死所有test程序,可換任意你需要執行的操作 killall -9 test exec ./test & fi sleep 1 done