實現原理主要是使用linux提供的crontab機制,定時查詢服務器進程是否存在,若是宕機則執行咱們預設的重啓腳本。python
首先咱們要向crontab加入一個新任務linux
sudo crontab -e #進入編輯狀態,選用vi編輯。 */1 * * * * sh /root/monitor.sh #添加每分鐘檢測
我這裏只是簡單的設置每分鐘調用一個shell腳本monitor.sh。這裏能夠配置的更強大,你們能夠去搜索一下crontab的教程,網上有不少這類的教程。
這裏須要注意的是,不少教程配置command的時候直接使用/root/monitor.sh,我設置的時候發現這樣配置不會執行shell腳本,前面加上sh後就能執行了。
而後咱們開始寫monitor.sh這個shell腳本。web
#! /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
這個腳本,只是簡單的檢測了進程是否存在,不存在就自動重啓服務器。shell
這裏其實也能夠擴展一下,好比對日誌文件的處理以及重啓時間等的記錄等等。服務器
到這裏就OK了,能夠殺掉進程,自行測試一下啦~測試
若是使用ui
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
則num爲字符串,return $num時會出錯提示return必須爲數字spa
轉自:https://blog.csdn.net/cocos2dGirl/article/details/80492843.net