linux定时任务设置

  设置定时任务时,需要注意很多细节,如权限,路径,输出日志等等,这里以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

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

  

原文地址:https://www.cnblogs.com/bruceChan0018/p/5976570.html