linux下通過腳本實現自動重啟程序的方法
來源:程序員人生 發布時間:2014-06-04 03:31:39 閱讀次數:3670次
建站學院(LieHuo.Net)轉載 無論什么程序都不可能完美無缺,理論上,任何程序都有 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 "CheckQQ_RET" if [ $CheckQQ_RET != 4 ]; then # 殺死所有test進程,可換任意你需要執行的操作 killall -9 test exec ./test & fi sleep 1 done |
腳本start:
加入limit coredumpsize 102400,設置core file的大小,一旦程序Core Dump,有跡可尋。在該腳本中后臺執行check腳本,可以省去很多麻煩,
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈