實現原理主要是使用linux提供的crontab機制,定時查詢服務器進程是否存在,如果宕機則執行我們預設的重啟腳本。
首先我們要向crontab加入一個新任務
sudo crontab -e #進入編輯狀態,選用vi編輯。 */1 * * * * sh /root/monitor.sh #添加每分鍾檢測
我這里只是簡單的設置每分鍾調用一個shell腳本monitor.sh。這里可以配置的更強大,大家可以去搜索一下crontab的教程,網上有很多這類的教程。
這里需要注意的是,很多教程配置command的時候直接使用/root/monitor.sh,我設置的時候發現這樣配置不會執行shell腳本,前面加上sh后就能執行了。
然后我們開始寫monitor.sh這個shell腳本。
#! /bin/sh proc_name="run_cloudweb.py" #進程名 proc_num() #查詢進程數量 { num=$(ps -ef | grep $proc_name | grep -v grep | wc -l) return $num } proc_num number=$? #獲取進程數量 if [ $number -eq 0 ] #如果進程數量為0 then #重新啟動服務器,或者擴展其它內容。 cd /usr/shineonStuido/cloudweb/ sudo nohup python run_cloudweb.py & fi
這個腳本,只是簡單的檢測了進程是否存在,不存在就自動重啟服務器。
這里其實也可以擴展一下,比如對日志文件的處理以及重啟時間等的記錄等等。
到這里就OK了,可以殺掉進程,自行測試一下啦~
如果使用
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
則num為字符串,return $num時會出錯提示return必須為數字
轉自:https://blog.csdn.net/cocos2dGirl/article/details/80492843