作用
服務器上運行的程序我們希望一直運行,長時間提供服務,但是在程序不穩定導致崩潰、系統重啟的情況下不能自啟動,所以需要提供一個守護程序能在異常的情況下重新啟動要守護的程序已達到目的。
思路
1.使用一個while循環一直檢測我們要守護程序進程在不在,例如通過 pgrep 進程名 判斷該進程是否存在。
2.當需要守護的進程不存在時,就去要守護的程序目錄下去啟動該程序。
3.在守護腳本中還可以統計程序重啟的次數,即腳本啟動一次,就記錄一次重啟情況,寫入本地文件方便查看統計,這也是一個小技巧
實例
#! /bin/bash logpath=/root/Log while [ 1 ] do if [ -f /root/UserApp/services/analysis_service/VAServer/startup.sh ] then procID=`pgrep VAServer` if [ "" == "$procID" ] then cd / #防止程序路徑不存在導致切換路徑失敗,遞歸調用當前或者未知路徑下的同名腳本 cd /root/UserApp/services/analysis_service/VAServer chmod +x startup.sh echo "restart VAServer at time:`date`" >> ${logpath}/restart_VAServer.log ./startup.sh 1>/dev/null 2>/dev/null fi fi sleep 10 done &
上面是守護腳本AnalysDaemon.sh的代碼實現
將該腳本放在系統自啟動文件中,這樣系統重啟后腳本也能夠正常啟動要守護的程序。
#放在文件/etc/rc.local最后 cd /root/UserApp/Daemon chmod +x AnalysDaemon.sh ./AnalysDaemon.sh