前言:因为之前没有接触cron语法,所以每次设置时间的时候就得请教别人。现在整理了一些常用的。有个自动生成cron语法的工具:http://cron.qqe2.com/
Cron表达式的格式:秒 分 时 日 月 周 年(可选)。
字段名 允许的值 允许的特殊字符
秒 0-59 , - *
分 0-59 , - * /
小时 0-23 , - * /
日 1-31 , - * ? / L W C
月 1-12 or JAN-DEC , - * /
周几 1-7 or SUN-SAT , - * ? / L C #
年 (可选字段) empty, 1970-2099 , - * /
“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
表达式意义
"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分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
此外还包括一些特殊符号
– ,
用–与,实现用以形成与/或关系,如放在Day of week域中’MON-FRI’表示周一到周五,’ MON-WED,SAT’表示”周一到周三还包括周六”
*
每个、任何,如放在Month域中就表示每个月
/
指定递增的时间段,如’0/15’在分钟域表示”每15分钟,开始是第零分钟”,如’3/20’在分钟域表示”一个小时间每隔20分钟,在第三分钟时开始”
?
该符号只能放在Day of month与Day of week域中,不指定值,当在这两个域中指定其中之一时而不指定另外一个时,那么另外一个就用?替代
L
该符号只能放在Day of month与Day of week域中,在Day of month域中表示当月的最后一天,如果在Day of week域只有L表示这个星期的最后一天同’ 7’或’ SAT’意义相同,但如果在L前面还有内容就表示这个月的最后一个星期几,如’6L’ or ‘FRIL’就表示这个月的最后一个星期五
W
指定与工作日最接近的一天,如在day-of-month域中’15W’表示与这个月第15天最近的那个工作日的那一天
#
指定一个月中的第n个星期几,如’ "6#3" or "FRI#3"在Day of week域中表示”每个月的第三个星期”
用例:
"0 0/5 * * * ?" 每5分钟触发一次
"10 0/5 * * * ?" 每5分钟的第10钞触发一次(i.e. 10:00:10 am, 10:05:10 am, etc.).
"0 30 10-13 ? * WED,FRI" 每周三与周五的10:30, 11:30, 12:30, and 13:30触发
"0 0/30 8-9 5,20 * ?" 在每月的第五与第20天的8:00, 8:30, 9:00 and 9:30触发,但不包括10:00