网上搜一下就有在线生成网站,很方便。
比如:Cron表达式生成器
用途
定时调度任务,比如说服务器、云函数中定时执行脚本函数。
Cron 表达式构成
Cron 表达式是字符串,一般由 6 - 7 个字段构成,空格
分隔。每个字段代表不同的含义,其中年
是非必须的,即至少有前六个字段。
秒 | 分 | 时 | 日 | 月 | 周 | 年(非) |
---|
各字段含义
字段 | 取值范围(整数) | 特殊字符 | 是否必须 |
---|---|---|---|
秒(Seconds) | 0 - 59 | , - * / | 是 |
分(Minutes) | 0 - 59 | , - * / | 是 |
时(Hours) | 0 - 23 | , - * / | 是 |
日(DayofMonth) | 1 - 31 | , - * ? / L W C | 是 |
月(Month) | 1 - 12 或者 JAN - DEC | , - * / | 是 |
周(DayofWeek) | 0 - 6 或者 SUN - SAT(建议用英文) | , - * ? / L C # | 是 |
年(Year) | 1970 - 2099 | , - * / | 否 |
DayofWeek
字段建议使用英文,系统很多不一样,国内查到是1-7。Wiki上写0-6,7有的系统可用。
字符含义
字符 | 含义 | 例子 |
---|---|---|
, | 列举 | 1,3,6 ,秒字段里表示每分钟的第1,3,6秒。 |
- | 范围 | 1-3 ,秒字段里表示每分钟的第1到第3秒。 |
* | 字段内的任意值 | 不同的字段中,代表每秒,每分,每小时等等 |
/ | 间隔时间触发(开始时间/时间间隔) | 1/3 ,秒字段里表示从每分钟的第1秒开始,每3秒触发一次 |
? | 忽略该字段的值(仅用于日 和周 ) | 0 1 * * * ? ,表示每年每月每日每小时的1分触发。 |
# | 该月第x个星期y(y#x),仅用于周 | MON#3 ,表示该月的第三个星期一。 |
L | 最后,last的缩写,仅用于日 和周 | (1)日字段:直接使用L 代表每月的最后一天。也支持偏移量的方式,配置L-1 则代表每月的倒数第二天。(2)周字段:直接使用 L 代表每周的最后一天,即SAT ;但配合使用比如MONL ,则代表每月最后一个周一。使用 L 时,不要指定列表, 或范围- , |
w | 工作日(MON-FRI),表示离当月指定日期最近的工作日触发,weekday的缩写,仅用于日 | 5W ,表示当月离5号最近的工作日触发(1)如果5号是周六,则在4号(周五)触发; (2)如果5号是周日,则在6号(周一)触发; (3)如果5号在周一到周五中的一天,则就在5号触发。 另外,W的最近寻找 不会跨月份 。 |
LW | 仅用于日 字段,表示当月的最后一个工作日触发 |
常用表达式示范
cron表达式 | 含义 | 常用场景 | 执行时间 |
---|---|---|---|
5 * * * * ? | 每分钟的第5秒执行一次 | 常见的每分钟的定时任务,检查数据库和缓存数据是否一致 | 2021-04-11 13:10:05 2021-04-11 13:11:05 2021-04-11 13:12:05 |
5 * 10-22 * * ? | 从早上10点到晚上十点,每分钟的第5秒执行一次 | 将定时任务限制在每天的工作时间 | 2021-04-11 13:10:05 2021-04-11 13:11:05 2021-04-11 13:12:05 |
5 0 0/6 * * ? 等效于 5 0 0,6,12,18 * * ? | 每天从0点开始,每隔6小时执行一次。执行时间为第0分5秒。 | 常用于每天较低频次的批量同步数据 | 2021-04-12 00:00:05 2021-04-12 06:00:05 2021-04-12 12:00:05 |