quartz的crontab功能是它的强大之处,它的语法和linux有些类似,但是又有一些不同,例如linux无法精确到秒,而quartz是支持的,本文直接通过例子进行说明。
1. 语法简介
|
|
每个位置可以支持设置的值如下:
有几点需要说明
- 除了年,每个位置是必须的。
- 每个位置如果无特殊值,可以用*代替,代表每。
- 除了一些数字,每个位置还允许一些特殊字符。
2. 例子。
下面直接用例子来说明,具体如下:
(1) 每秒执行
|
|
啰嗦解释一下就是每个月、每个星期、每天、每小时、每分钟、每秒。所以其实就是每秒。但是如果运行程序就会发现报如下错误, 似乎提示是星期和日是一个矛盾体。
|
|
因为日和星期是一个矛盾体,所以可以用一个?代替即可,所以下面两个的结果是一样的,都代表每秒。
(a) 每个月的每个星期
|
|
(b) 每个月的每天
|
|
(c)下面两种情况都是错误的
|
|
(2) 每分钟执行一次
下面是不是呢?其实仔细想想“分钟”位置0/1和*的效果是一样的
|
|
也就是说如果想实现每分钟执行一次,要在秒的位置给出具体的值,例如
每分钟的第59秒执行
|
|
每分钟的第0秒执行
|
|
有个小技巧,如果需求是只要保证每分钟完成,而不在意在哪秒完成,在大量trigger的情况下,可以对秒做打散操作。
|
|
如果
|
|
具体日志如下
|
|
如果想每5秒执行一次,可以如下:
|
|
如果想每5秒执行一次,但是从每分钟的第20秒到第60秒,可以这么配置
|
|
如果当前的秒小于20,那么就等到执行。
|
|
如果当前秒超过20,可以在执行周期内执行。
|
|
|
|
(3)每天10点20分执行
|
|
(4) 每天下午2点~3点(整点开始,每隔五分钟执行)
|
|
(5) 每月的第三周的星期五的10点20分执行
|
|
(6) 每周一到周五的10点20分执行
|
|
注意:星期是不分大小写。
3. 其他
特殊字符的解释如下,如果用到的时候可以看下。
也有在线的crontab生成工具:
0和30分执行10/30 * * ? * *
5和35分执行15/30 * * ? * *
|
|
|
|
|
|