linux下通過腳本實現自動重啓程序

無論什麼程序都不可能完美無缺,理論上,任何程序都有 Core Dump 的一天,正式運營的程序,尤其是服務器程序,一旦 Core Dump ,後果不堪設想,有過服務器開發經驗的朋友,一定都經歷過深夜美夢中,被電話驚醒的慘痛經歷,手忙腳亂把服務器重新啓動,第二天上班還要被老闆一頓狠批。所以,程序發生錯誤時自動重啓變得很重要。這裏集中討論 linux 實現自動重啓程序的方法。

    linux 下實現程序的自動重啓有很多方法,這裏我們介紹的是通過自己寫腳本來實現,

    自動重啓腳本


假定需要實現重啓的程序名爲
 test ,我們這裏通過判斷進程數目來判斷程序是否正常。

ps -ef | grep "$1" | grep -v "grep" | wc –l 是獲取 $1 (本例中爲 test )的進程數,腳本根據進程數來決定下一步的操作。通過一個死循環,每隔 1 秒檢查一次系統中的指定程序的進程數。

代碼如下:
    腳本check

																		#!/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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章