概述

cron 表达式是一个字符串,该字符串由 6 个空格分为 7 个域,每一个域代表一个时间单位。格式如下:

  1. [秒] [分] [时] [日] [月] [周] [年]

通常定义 “年” 的部分可以省略,实际常用的由 前六部分组成
**

CRON中时间元素的说明

关于 cron 的各个域的定义如下表格所示:

时间元素 有效数值范围 可使用的通配符
0-59 , - * /
0-59 , - * /
0-23 , - * /
1-31 , - * ? / L W
1-12 或 JAN-DEC , - * /
1-7 或 SUN-SAT , - * ? / L #
1970-2099 , - * /

cron中的通配符

CRON格式中特殊字符说明

字符 作用 举例
, 列出枚举值 在 “分” 中定义为 8,12,35 ,则表示分别在第 8 分,第 12 分 第 35 分执行该定时任务。
- 表示触发范围 在“分”中使用5-10,表示从5分到10分钟每分钟触发一次
在 “时” 这个域中定义 1-6,则表示在 1 到 6 点之间每小时都触发一次
* 表示所有值,可解读为 “每” 在分域使用, 表示每分钟都会触发一次
如果在“日”这个域中设置 `
`,表示每一天都会触发
/ 表达式分为两个部分,其中第一部分是起始值,第二部分是固定时间,起始时间开始触发,每隔固定时间触发一次, 在Minutes域使用5/10,表示5分时触发一次,每10分钟再触发一次
? 在DayofMonth和DayofWeek中,用于匹配任意值 在DayofMonth域使用?,表示每天都触发一次
要在每月的 8 号触发一个操作,但不关心是周几,我们可以这么设置 0 0 0 8 * ?
# 在DayofMonth中,确定第几个星期几,只能作用于 “周” 1#3表示第三个星期日
L 英文中的LAST 的意思,表示最后,
只能在 “日”和“周”中使用
在DayofWeek中使用5L,表示在最后一个星期四触发
在“日”中设置,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年), 在“周”上表示周六
W 表示有效工作日(周一到周五) 在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日4日触发一次

示例

下面给出一些示例,可根据上面的解释进行练习解读:

  • 每隔 1 分钟执行一次:0 /1 ?
  • 每天 23 点执行一次:0 0 23 ?
  • 每月 1 号凌晨 1 点执行一次:0 0 1 1 * ?
  • 每月最后一天 23 点执行一次:0 0 23 L * ?
  • 每周星期天凌晨 1 点实行一次:0 0 1 ? * L
  • 在 26 分、29 分、33 分执行一次:0 26,29,33 * ?

其实CRON表达式无需多记,需要使用的时候直接使用在线生成器就可以了,地址:https://cron.qqe2.com/