Cron 表达式
Cron 表达式是一种用于定义定时任务执行规则的字符串格式,广泛应用于操作系统定时任务和应用程序调度。其核心结构与使用规则如下:
一、基本结构
Cron 表达式由 6 或 7 个字段组成,按顺序表示:
秒(0-59) 分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 周(1-7/SUN-SAT) [年(可选,1970-2099)]
例如 0 30 8 * * 1
表示每周一 8:30:00 执行任务。
二、字段详解与特殊符号
每个字段支持以下符号定义规则:
符号 | 作用 | 示例 |
---|---|---|
* | 匹配所有值 | 0 * * * * * 每分钟执行 |
? | 仅在 日 或 周 字段使用,表示不指定值 | 0 0 12 ? * MON 每周一中午12点 |
- | 定义范围 | 0 0 9-18 * * * 每天9点到18点整点 |
, | 枚举多个值 | 0 0 1,13 * * * 每日1点、13点 |
/ | 定义步长(起始值/间隔) | 0 */15 * * * * 每15分钟执行 |
L | 表示最后一天(日字段)或周六(周字段) | 0 0 L * * 每月最后一天执行 |
W | 最近工作日(日字段) | 0 0 15W * * 离15日最近的工作日 |
# | 指定第几周的周几(周字段) | 0 0 0 ? * 6#3 每月第三个周五 |
兼容性注意:年字段为可选,部分系统仅支持 6 字段格式37;周字段中
1=SUN
或0=SUN
因系统而异46。
三、常用示例
- 每日定时任务
0 0 2 * * ?
→ 每天凌晨2点执行56 - 周期性任务
*/10 * * * * ?
→ 每10秒执行一次17 - 复杂组合规则
0 0 12 1/5 * ?
→ 每月1日起每隔5天中午12点执行45 - 工作日调度
0 0 9 ? * MON-FRI
→ 每周一至周五9点执行68
四、注意事项
- 冲突处理:若同时指定 日 和 周 字段,部分系统会触发两次47;
- 闰年与月末:如
0 0 0 29 2 ?
仅在闰年2月29日执行4; - 校验工具:可使用在线工具(如 crontab.guru)验证表达式合理性8。