单次任务
单次任务只会在执行开始时间执行一次,因此不需要设置执行结束时间和重复方式。
重复任务
重复任务需要设置执行开始时间,执行结束时间和重复方式
Recurrence
参数。重复任务会在执行开始时间执行第一次,后续按照Recurrence
参数的配置进行若干次重复,直至执行结束时间。Recurrence
参数的取值为 Cron 表达式字符串。Cron表达式介绍
Cron 是一种广泛应用于描述时间和日期信息的标准表达式,通常由5~7个字段组成。定时任务中的R
ecurrence
参数限制为5个字段,由空格分开,结构为:分,小时,日期,月份,星期。字段说明
字段 | 允许值 | 允许的特殊字符 |
分(Minutes) | 0 - 59的整数 | , - * / |
小时(Hours) | 0 - 23的整数 | , - * / |
日期(DayofMonth) | 1 - 31的整数(需要考虑当月天数) | ,- * / |
月份(Month) | 1 - 12的整数(JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC) | , - * / |
星期(DayofWeek) | 1 - 7的整数或者(SUN、MON、TUES、WED、THUR、FRI、SAT(1=MON,7=SUN)) | , - * / |
特殊字符说明
每一个字段都使用数字,还可出现如下特殊字符,它们的含义是:
*
:表示匹配任意值。假如在分字段使用*
,即表示每分钟都将执行一次。-
:表示匹配范围。例如在分钟字段使用5-20
,表示在5分到20分之间,每分钟执行一次 。/
:表示从起始时间开始执行,每隔固定时间执行一次。例如在分钟字段使用5/20
,表示从5分开始,每隔20分钟执行一次,即25分、45分各执行一次。,
:表示列出枚举值。例如:在分钟字段使用5,20
,表示在5分和20分各执行一次。Cron表达式示例
表达式 | 解释 |
15 10 * * * | 每天上午10:15执行一次 |
0/5 14,18 * * * | 每天的14:00 - 14:55,18:00 - 18:55,每隔5分钟执行一次 |
15 10 ? * MON-FRI | 每周周一至周五上午10:15执行一次 |
0 12 1/5 * * | 每月1号开始,每隔5天后,在中午12:00执行一次 |
重复定时任务示例1:按天重复
设置执行开始时间为3月8号晚18点,结束时间为同年5月2号晚18点,每14天执行一次。
注意:
此处的每14天执行一次用于描述Cron表达式,从每月1号开始计算,每月1号、15号、29号(如有)执行一次,执行开始时间3月8号并不作为重复周期的开始时间。
此时重复方式对应的Cron表达式为0 18 */14 * *,含义为每月1号开始,每隔14天后,在18:00执行一次,后续的执行日期是:3月8号,3月15号,3月29号,4月1号,4月15号,4月29号,5月1号;执行时间均为18:00。3月8号为执行开始时间,执行第一次,后续的日期按照 Cron 表达式执行。
重复定时任务示例2:按月重复
设置执行开始时间为3月8号晚19点,结束时间为同年5月1号晚19点,每月第10天到第20天,每天执行一次。
此时重复方式对应的Cron表达式为0 19 10-20 * *,含义为每月10号到20号,在晚上19:00执行一次,后续的执行日期是:3月8号,3月10号~3月20号,4月10号~4月20号;执行时间均为19:00。3月8号为执行开始时间,执行第一次,后续的日期按照 Cron 表达式执行。
重复定时任务示例3:按周重复
设置执行开始时间为3月8号晚20点,结束时间为同年4月4号晚20点,每周一执行一次。
此时重复方式对应的 Cron 表达式为0 20 * * 1,含义为每周一晚上20:00执行一次,后续的执行日期是:3月8号,3月13号,3月20号,3月27号,4月3号;执行时间均为20:00。3月8号为执行开始时间,并不是周一,执行第一次,后续的日期按照 Cron 表达式在周一执行。