一、脚本
尽量写绝对路径,防止出错
restart.sh 重启脚本
------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
ID=`ps -ef | grep "quartz.jar" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"
nohup /usr/lib/java-1.8.0/jdk1.8.0_181/bin/java -jar /data/projects/quartz/quartz.jar --server.port=9998 --debug > /data/projects/quartz/printout.log 2>&1 &
---------------------------------------------------------------------------------------------------------------------
执行chmod -R 777 restart.sh赋予权限
alive.sh 检测宕机自动拉起
---------------------------------------------------------------------------------
#!/bin/bash
ls_date=`date +%Y%m%d`
ID=`ps -ef | grep "oa-meeting.jar" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
if [[ $ID -eq 0 ]];then
nohup java -jar /data/projects/oa-meeting/oa-meeting.jar --server.port=8092 --debug > /data/projects/oa-meeting/logs/printout"$ls_date".log 2>&1 &
fi
-------------------------------------------------------------------------------------
二、修改linux系统定时任务
[root@node1 quartz]# crontab -e
--------------------------------------------
SHELL=/bin/bash #不添加这个定时任务不执行
40 * * * * /data/projects/quartz/restart.sh #每小时的40分执行脚本
*/1 * * * * /data/projects/oa-meeting/alive.sh #每分钟执行一次
---------------------------------------
wq保存退出
crontab语法
Crontab 格式
使用crontab -e 添加要执行的命令。
添加的命令必须以如下格式:
* * * * * /command path
前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。
前5个字段分别表示:
分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
-
每分钟定时执行一次规则:
每1分钟执行: */1 * * * 或者 * * * *
每5分钟执行: */5 * * * * -
每小时定时执行一次规则:
每小时执行: 0 * * * *或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午7点10分执行:10 7 * * * -
每天定时执行一次规则:
每天执行 0 0 * * * -
每周定时执行一次规则:
每周执行 0 0 * * 0 -
每月定时执行一次规则:
每月执行 0 0 1 * * -
每年定时执行一次规则:
每年执行 0 0 1 1 * -
其他例子
5 * * * * 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令