cron syntax

我在java程序里调用一个第三方schedular类库quartz的时候,就注意到里面schedular的语法像这个样子:

0 */2 * * *

当初就觉得怪怪的,总也记不住,今天才知道原来这是cron syntax。

同时Jenkins中的定时任务使用的scheduler也是使用cron语法定义的。还有在spring中引用的定时任务。

  • Cron in UNIX

Cron is a time-based job scheduler in Unix-like computer operating systems。cron allows tasks to be automatically run in the background at regular intervals by the cron daemon.

Crontab (CRON TABle) is a file which contains the schedule of cron entries to be run and at specified times. 所以编辑这个文件就能定义定时任务。

所以我想很多其它java相关的框架,工具都使用cron就非常合理了。因为java很多应用都是在linux,unix运行的。

因此明白cron非常有必要。


Crontab中有6列:

*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of        month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

前5列定义的是schedular。最后一列定义运行的命令。下面结合例子讲解:


1,*符号:

30     18     *     *     *         rm /home/someuser/tmp/*

表示每天18点30分运行rm命令。其中*表示任意值,此例中就是说,不考虑day of month, month 和 day of week的值。

如果*在前:

*    5     *     *     *         rm /home/someuser/tmp/*

表示从凌晨5点到凌晨6点之间,每分钟运行一次。


2,用逗号分割的值:

0    0    1,10,15     *    *        rm /home/someuser/tmp/*

表示在一个月的第1天,第10天,第15天的0点0分运行命令。    


3,range:

0    0    *     *    1-5    ls -l

1-5表示从星期一到星期五每天0点0分运行命令ls。


4, 如果同时指定了day of month和day of week,就是都运行的关系。

0    0    10     *    1    ls -l

在每个月的第10天和每个星期一运行命令。


5,Repeat pattern:

*/10    *    *     *    *    ls -l

表示每隔10分钟运行一次命令。如果是0-10/5则表示,在每个小时头10分钟内,每5分钟运行一次。

*   10/2    *    *     *    ls -l

则表示从每天的第10小时开始,每隔2小时的一个小时间隔内,每秒运行一次。


6,除里上面5个定义时间的field之外,cron中还可以使用关键字:

@yearly @hourly @daily @reboot

除@reboot表示启动后运行外,其他都可以用上面讲的cron语法表示一样的时间。

例如@hourly就等于0  *  *  *  *  command

使用时就是:

@hourly   command 其实就是简便写法。


cron语法就是这些。另外cron不支持精确到秒级的定时任务,只能到分钟。


  • Cron in Spring

在spring框架中,我们经常使用的org.springframework.scheduling.quartz.CronTriggerBean

并不完全等同于cron的语法。

quartz比cron多出两位:second和year。所以quartz是可以到秒级的,下面是官网的说明:

http://quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontrigger



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值