咱們在實際運維過程當中,常常會出現某一個程序(如tomcat,perl等)的進程平白無故就在服務器上消失了,這樣的話第一咱們須要投入精力去分析它爲何會消失,第二還須要配置相關檢查人員,比較耗費時間。
咱們能夠經過在Linux下寫一個shell腳本,而且配置到Crontab中,這樣的話當服務器上沒有程序進程的時候,讓shell自動幫咱們完成這個操做,將業務影響的風險降到最低,同時咱們能夠按期觀察Crontab中輸出的日誌,看是否有這種狀況發生,再進行鍼對性處理,比問題突發起來再處理好不少。java
Shell內容:若是須要配置多個程序的話,將最下方註釋放開便可。mysql
#!/bin/sh # 守護腳本,經過 grep 命令檢查進程是否存在而後從新啓動進程 # 能夠配置多個進程 # 根據進程名判斷進程是否消失(行數爲0),紅字爲查詢進程關鍵字,必須惟一 if test `ps -ef | grep 'programme name' |grep -v vi |grep -v grep| wc -l` -eq 0 then #記錄發生時間 ,記錄丟失進程名 echo `date` echo 'programme name is missing.And the programme is restarting...!' #從新啓動程序,本身配置 cd /home/inm/ueap-mysql/redis-2.6.17 src/redis-server redis.conf fi # 多個進程守護(配置方法與上方相同) # if test `ps -ef | grep INASProcessManager |grep -v vi |grep -v grep| wc -l` -eq 0 # then # echo 'INASProcessManager is missing!' # echo 'INASProcessManager starting!' # java -jar /jh_app/inas/bin/INASProcessManager.jar >> mng.dump & # fi
在crontab中配置上以上腳本,並記錄日誌:redis
*/3 * * * * /bin/sh /home/aiuap/esb/ueap-collect/watch.sh>>/home/aiuap/esb/ueap-collect/watch.log
sql