linux下通過指令碼實現自動重啟程式

2021-04-23 18:33:06 字數 1004 閱讀 7005

出處不詳,網上摘錄。

無論什麼程式都不可能完美無缺,理論上,任何程式都有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()

# 檢查test例項是否已經存在while [ 1 ] ; do checkprocess "test" checkqq_ret=$? if [ $checkqq_ret -eq 1 ]; then# 殺死所有test程序,可換任意你需要執行的操作  killall -9 test  exec ./test &   fi sleep 1done

指令碼start:

加入limit coredumpsize 102400,設定core file的大小,一旦程式core dump,有跡可尋。在該指令碼中後台執行check指令碼,可以省去很多麻煩,

#!/bin/cshlimit coredumpsize 102400

./check &

linux下通過指令碼實現自動重啟程式

無論什麼程式都不可能完美無缺,理論上,任何程式都有co程式設計客棧re dump的一天,正式運營的程式,尤其是伺服器程式,一旦core dump,後果不堪設想,有過伺服器開發經驗的朋友,一定都經歷過深夜美夢中,被 驚醒的慘痛經歷,手忙腳亂把伺服器重新啟動,第二天上班還要被老闆一頓狠批。所以,程式發生...

linux 下 mysql自動備份指令碼

伺服器上有n個資料庫 現在需要備份其中的5個資料庫 隨性寫了個 僅供參考 每天自動備份 db user root db passwd pwd time date y m d all db mysql u db user p db passwd bse show databases for db in...

linux 下 mysql自動備份指令碼

伺服器上有n個資料庫 現在需要備份其中的5個資料庫 隨性寫了個 僅供參考 每天自動備份 db user root db passwd pwd time date y m d all db mysql u db user p db passwd bse show databases for db in...