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 看一下對應的服務是否啓動了,可以看到對應的服務已經啓動了。
這樣就實現了服務宕機掛掉後,自動檢測並自動重啓