- 介绍
cron是Unix/Linux系统工具,有很强的任务调度能力,Quartz的CronTrigger触发器就是建立在cron的基础上.
- 格式说明
一个cron Expression(克龙表达式)是由6或7个字段以空格分隔的字符串,每个字段包含一些允许的值或允许的特殊字符(具体见下表),
字段 | 必要 | 容许值 | 容许的特殊字符 |
Seconds(秒) | 是 | 0-59 | -*/ |
Minutes(分) | 是 | 0-59 | -*/ |
Hours(时) | 是 | 0-23 | -*/ |
Day of month(日) | 是 | 1-31 | -*?/LW |
Month(月) | 是 | 1-12或JAN-DEC | -*/ |
Day of week(星期) | 是 | 1-7或SUN-SAT | -*?/L# |
Year(年) | 否 | 空值,1970-2099 | -*/ |
- 特殊字符说明
*:所有值,用来选择某个字段的所有的值,例如'*'用在分钟字段上,意味着每一分钟(包含0-59所有值)
?:没有具体的值,举例说明,在每月的10号出发任务,在Day of month(日)字段上设置值为10,但是我不关心那一天星期几,那么在Day of week(星期)字段上设置'?'.
-:用来标识一个范围,例如在Hours(时)字段上设置'10-12',意味着在10点,11点和12点.
,:用来标识附加的值,例如在Hours(时)字段上设置'10,12,14',意味着在10点,12点和14点.
/:用来标识值的递增,例如在Seconds(秒)字段上设置'0/15',意味着在第0秒,第15秒,第30面,第45秒.'/'左边为初始值,右边为递增值.
L:在日期和星期字段中,L有不同的含义,在日期字段中L标识月的最后一天,在星期字段中标识星期的最后一天(7或者SAT),另外,在星期字段中,L放置在一个数值后,后其他含义,比如'6L',意味着一个月中最后一个星期五.在日期字段中'L'可以用来标识最后一天的一个偏移量,例如'L-3',标识一个月的倒数第三天.(注意,这个时候'-'字符标识的不是一个范围).
W:可以理解为工作日,使用在日期字段中,标识给定日期中,最近的工作日(星期-到星期五)触发.比如'15W',如果15号是星期六,则在14号(星期五)触发,如果15号是星期天,则在16号(星期一)触发.如果15号是星期二,则在15号星期二触发.如果你指定'1W',1号是星期六,那么将在3号星期1触发(是不会跨月找工作日的);'W'字符标识的是指定的一天,不能标识一个范围.'W'和'L'字符结合使用,像这样'LW',标识一个月中最后一个工作日.
#:用在星期字段,标识一个月中第几个星期几,例如'6#3'标识一个月中第3个星期五,'2#1'标识一个月中第一个星期一,'4#5'标识一个月中第5个星期3(等等,一个月中有可能有第5个星期三吗,永远不会,所以,这个是永远也不会触发的).
另外合法的字符,是不区分大小写的,MON和mon是一样的.
- 示例
- **Expression** **Meaning**
- 0 0 12 * * ? 每天12点触发
- 0 15 10 ? * * 每天10:15am 触发
- 0 15 10 * * ? 每天10:15am 触发
- 0 15 10 * * ? * 每天10:15am 触发
- 0 15 10 * * ? 2005 2005年的每天10:15am 触发
- 0 * 14 * * ? 每天的下午2点到2点59分的每分钟触发
- 0 0/5 14 * * ? 每天的下午2点到2点55分钟,每5分钟触发一次
- 0 0/5 14,18 * * ? 每天的下午2点到2点55分钟和下午6点到6点55分钟,每5分钟触发一次
- 0 0-5 14 * * ? 每天下午2点到2点05分钟的每一分钟触发一次
- 0 10,44 14 ? 3 WED 3月的每个星期3的下午2点10分和下午两点44分钟触发
- 0 15 10 ? * MON-FRI 每周一到周五的上午10点15分钟触发
- 0 15 10 15 * ? 每月的15号的上午10点15分钟触发
- 0 15 10 L * ? 每月最后一天的10点15分钟触发
- 0 15 10 L-2 * ? 每月倒数第二天的10点15分钟触发
- 0 15 10 ? * 6L 每月最后的星期5的10点15分钟触发
- 0 15 10 ? * 6L 2002-2005 2002,2003, 2004 and 2005年的每月最后的星期5的10点15分钟触发
- 0 15 10 ? * 6#3 每月的第3个星期五的10点15分钟触发
- 0 0 12 1/5 * ? 每月1号开始,每5天的中午12点触发.
- 0 11 11 11 11 ? 每个11月11号的11点11分钟触发.
在日期和星期字段中注意'?'和'*'的效果
介绍内容来自Quartz的官方文档.
转:http://my.oschina.net/u/1042053/blog/136090