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 看一下对应的服务是否启动了,可以看到对应的服务已经启动了。
这样就实现了服务宕机挂掉后,自动检测并自动重启