corn
CORN
举例
常用cron表达式例子
这里稍微解释几下这个地方
0/2 * * * * ? 表示每2秒 执行任务(数值不能超过60,如超过好像会按最大上限执行每60秒执行一次,即最多每60秒执行一次,错误表达0/120 * * * * ?,并不会每120秒,执行一次,如需要请转化为分钟,数值不能超过60,因为60秒的话,就可以转化成1分钟了,所以它最大就只能是60)
0 0/2 * * * ? 表示每2分钟 (数值不能超过60,因为60分钟的话,就可以转化成小时了,所以它最大就只能是60)
0 0 0/2 * * ? 表示每2小时 执行任务(数值不能超过24,因为24小时的话, 就可以转化成一天了,所以它最大只能是24)
也就是说,如果超过60秒,它就要你转化1分钟。
如果超过60分钟,它就要你转化1小时。
如果超过24小时,它就要你转化1天了。
所以我感觉如果超过7天,他是不是要转化成一周了。(自己猜测的)
说明
说明:
Java(Quartz)
* * * * * * *
- - - - - - -
| | | | | | |
| | | | | | + year [optional]
| | | | | +----- day of week (1 - 7) sun,mon,tue,wed,thu,fri,sat
| | | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | | +--------------- day of month (1 - 31)
| | +-------------------- hour (0 - 23)
| +------------------------- min (0 - 59)
+------------------------------ second (0 - 59)
用法
0/2 * * * * ? 表示每2秒 执行任务(数值不能超过60,如超过好像会按最大上限执行每60秒执行一次,
即最多每60秒执行一次,错误表达0/120 * * * * ?,并不会每120秒,执行一次,如需要请转化为分钟)
0 0/2 * * * ? 表示每2分钟 (数值不能超过60,缘由同上)
0 0 0/2 * * ? 表示每2小时 执行任务(数值不能超过24,缘由同上)
0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务
0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点 (星期一 MON;星期二 TUES;星期三 WED;星期四 THUR.;星期五 FRI;星期六 SAT.;星期日 SUN)
14 35 15 ? * 1,2,3,4,5,6,7 表示每周日,周一,周二,周三,周四,周四,周五,周六的15点35分14秒触发 (上一条,如果不想用英文,上面一条的可以用数字表示,注意周日认为是一周的第一天)
0 0 12 * * ? 每天中午12点触发
0 15 10 ? * * 每天上午10:15触发
0 15 10 * * ? 每天上午10:15触发
0 15 10 * * ? 每天上午10:15触发
0 15 10 * * ? 2005 2005年的每天上午10:15触发
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
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期间的每1分钟触发
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 15 10 15 * ? 每月15日上午10:15触发
0 15 10 L * ? 每月最后一日的上午10:15触发
0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
// 每隔1秒执行一次
*/1 * * * * ?
// 每隔1分钟执行一次
0 */1 * * * ?
// 每天0点执行一次
0 0 0 * * ?
// 每月1号凌晨1点执行一次
0 0 1 1 * ?
// 在1分、2分、3分执行一次
0 1,2,3 * * * ?
// 每天的0点、1点、2点执行一次
0 0 0,1,2 * * ?
宏观表达式
- " @year ”(或“ @annual ”)每年运行一次,即" 0 0 0 1 1 * "
- " @month "每月运行一次,即“ 0 0 0 1 * * ”
- " @weekly ”每周运行一次,即“ 0 0 0 * * 0 ”
- " @daily ”(或“ @midnight ”)每天运行一次,即:“ 0 0 0 * * * ”
- " @hour ”每小时运行一次,即:" 0 0 * * * * "
特别说明
如果 0/2 不起作用 用*/2 来表示
通配符
-
, (逗号) 通配符表示多个并列的值。如:在 Month 字段中, JAN,FEB,MAR 代表 一月,二月和三月。
-
- (破折号) 通配符表示范围。在 Day 字段中,1-15 代表指定月份的 1到15号。
-
- (星号) 通配符表示字段的所有值。如:在 Hours 字段中,* 表示每小时。不能同时在 Day-of-month 和 Day-of-week 字段中使用 * 。如果你在其中一个使用了,你必须在另一个字段使用 ? 。
-
/ (斜杠) 通配符表示增量。在 Minutes 字段中,您可以输入 1/10 来指定每10分钟一次,从每小时的第1分钟开始(例如,第11分钟、第21分钟和第31分钟,等等)。
-
? (问号) 通配符表示 any 。在 Day-of-month 字段中,你可以输入7,如果一周中的任何一天都可以,你可以在 Day-of-week 字段输入?。
-
L 通配符表示 Day-of-month 或 Day-of-week 字段中,月或周的最后一天。
-
W 通配符 在 Day-of-month 字段表示 一个工作日。在 Day-of-month 字段,3W 表示 离一个月的第三天最近的工作日。
-
'#' 通配符表示在 Day -of-week 字段中 一个月内指定的星期几的某个实例。例如,3#2 将是 这个月的第二个星期二 : 3 指的是星期二,因为它是每周的第三天,而 2 指的是这个月中该类型的第二天。
-
如果使用 # 字符,则只能在星期字段中定义一个表达式。例如,3#1,6#3 是无效的,因为它被解释为两个表达式。