设置定时任务时,需要注意很多细节,如权限,路径,输出日志等等,这里以centOS为例,给出一个执行成功的例子,但实际设置的方法很多,本篇只是作为参考。
登录服务器时是自己的用户名,在/opt/目录下新建一个文件夹,而后把jar包,依赖以及日志的目录新建好,给出权限:
sudo chmod -R 777 *
而后书写脚本,脚本内容设置为执行关键jar包,并输出日志,需要注意的是,这里的jar包路径以及日志的路径都必须是绝对路径,否则在定时任务中无法执行:
#!/bin/bash /opt/jdk1.7.0_67/bin/java -jar /opt/chiq3huanJson/SendMsgHuanJson-0.0.1-SNAPSHOT.jar >> /opt/chiq3huanJson/logs/SendMsgHuanJson.log
这里可以看到,jdk是绝对路径,这是由于jar包编译的环境为jdk1.7,而服务器的默认环境为jdk1.6,所以需要指定jdk的路径。写好脚本后,同样给出777权限。此时测试脚本,如果能够成功执行,我们就可以设置定时任务了:
sudo crontab -e
进入后设置运行我们刚刚书写的脚本:
15 23 * * * sh /opt/chiq3huanJson/go.sh
--->
关键的点:权限/路径
=========================================>
关于时间设置规则:
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache