Linux下經過配置Crontab實現進程守護

咱們在實際運維過程當中,常常會出現某一個程序(如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.logsql

相關文章
相關標籤/搜索