> 文章列表 > Cron表达式

Cron表达式

Cron表达式

网上搜一下就有在线生成网站,很方便。

比如: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