Linux上用cron定時任務加Shell腳本實現判斷服務掛掉宕機後自動重啓服務

1、安裝cron

一般買的雲服務器上都會自帶有cron的

但是如果沒有安裝的話,分別執行下邊兩個命令進行安裝
yum -y install vixie-cron
yum -y install crontabs

安裝好了以後,可以通過以下命令開啓、關閉定時任務,以及查看crontab的狀態

service crond start     //啓動服務
service crond stop      //關閉服務
service crond restart   //重啓服務
service crond reload    //重新載入配置
service crond status    //查看crontab服務狀態

開啓定時任務服務後 用這個命令 service crond status 來查看一下

可以看到已經啓動了

2、編寫定時任務需要執行的啓動腳本

以下是我服務器上的一個服務的定時任務的腳本內容:僅供參考
#--------------------------------------------------------------------------------------
#查詢wx_pay進程個數:wc -l 返回行數
count=`ps -ef | grep wx_pay-0.0.1-SNAPSHOT.jar | grep -v "grep" | wc -l`
#echo $count

sec=7
nowtime=`date +"%Y-%m-%d %H:%M:%S"`
nowDate=`date +"%Y-%m-%d"`
#開始一個循環,以判斷進程是否關閉
for var in 1 2
	do
     if [ $count -gt 0 ]; then
      #若進程還未關閉,則腳本sleep幾秒
      echo sleep $sec second the $var time, the wx_pay_Thread is still alive
      sleep $sec
     else
      #若進程已經關閉,則重啓,並出循環
	  cd /cj/wxpay
	  nohup java -jar wx_pay-0.0.1-SNAPSHOT.jar  > nohup.log 2&>wx_pay-$nowDate.log &
	  echo $nowtime" start wx_pay-0.0.1-SNAPSHOT.jar"
	  echo "ok! is success!"
	  echo ""
      break
     fi
    done
	
#--------------------------------------------------------------------------------------

3、把寫的定時任務腳本加入crontab定時任務列表

輸入命令:crontab -e

把定時任務腳本添加進去

#一分鐘檢查一次,然後把重新啓動的日誌追加至restart.log中

*/1 * * * * /cj/wxpay/wx_pay_restart.sh  >> /cj/wxpay/restart.log

4、配置好了以後可以看下效果

如果當前的服務進程沒有掛掉,它會打印出

sleep 7 second the 1 time, the wx_pay_Thread is still alive

然後7秒以後會再次去嘗試着看下進程是否存活,如果還是存活就打印出

sleep 7 second the 2 time, the wx_pay_Thread is still alive

然後進入下一次定時任務的輪詢

然後咱們把對應的服務kill掉以後,來看一下它會不會自動重啓

可以看到當前的服務已經被kill掉了,是沒有啓動的

一分鐘左右(我設置的cron任務是一分鐘執行一次)定時任務執行後,再看下。

可以看到定時任務執行後,打印出了啓動成功!

再 ps 看一下對應的服務是否啓動了,可以看到對應的服務已經啓動了。

這樣就實現了服務宕機掛掉後,自動檢測並自動重啓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章