cron表达式
cron表达式
cron 表达式用于定义定时任务的执行时间规则。它由若干字段组成,不同系统略有差异(如 Linux crontab 与 Spring 的 cron 表达式),但核心思想相同:用数字和符号描述任务的周期性时间点。
一、标准格式(Linux)
共 5 个字段:
| 字段 | 含义 | 取值范围 |
|---|---|---|
| 1 | 分钟 (Minutes) | 0–59 |
| 2 | 小时 (Hours) | 0–23 |
| 3 | 日期 (Day of Month) | 1–31 |
| 4 | 月份 (Month) | 1–12 或 JAN–DEC |
| 5 | 星期 (Day of Week) | 0–7(0或7代表星期天) |
示例:
1 | 30 2 * * * # 每天凌晨2:30执行 |
二、Spring 或 Quartz 格式
共 6 或 7 个字段:
| 字段 | 含义 | 取值范围 |
|---|---|---|
| 1 | 秒 (Seconds) | 0–59 |
| 2 | 分 (Minutes) | 0–59 |
| 3 | 时 (Hours) | 0–23 |
| 4 | 日 (Day of Month) | 1–31 |
| 5 | 月 (Month) | 1–12 或 JAN–DEC |
| 6 | 星期 (Day of Week) | 1–7 或 SUN–SAT |
| 7(可选) | 年 (Year) | 1970–2099 |
示例:
1 | 0 0 12 * * ? # 每天中午12点执行 |
三、通配符说明
| 符号 | 含义 |
|---|---|
* |
任意值 |
/ |
步长,如 */5 表示每5单位执行一次 |
- |
范围,如 1-5 表示1到5 |
, |
多个值,如 1,3,5 |
? |
不指定具体值(常用于“日”和“星期”字段避免冲突) |
四、差异简述
- Linux
crontab没有“秒”字段; - Quartz/Spring cron 多一个“秒”字段;
- Quartz 中日与星期字段不能同时指定,需用
?占位。
五、常见业务的 cron 表达式
| 业务场景 | 表达式(Quartz/Spring 格式) | 说明 |
|---|---|---|
| 每天凌晨 2 点执行备份 | 0 0 2 * * ? |
每天 02:00 运行 |
| 每隔 10 分钟采集一次数据 | 0 0/10 * * * ? |
每 10 分钟触发一次 |
| 每小时执行日志清理 | 0 0 * * * ? |
每小时整点执行 |
| 每天 23:30 发送日报 | 0 30 23 * * ? |
每天晚上 11:30 执行 |
| 每周一凌晨 1 点重启服务 | 0 0 1 ? * MON |
每周一 01:00 执行 |
| 每月 1 日 0 点归档数据 | 0 0 0 1 * ? |
每月第一天 00:00 执行 |
| 工作日每天早 9 点启动任务 | 0 0 9 ? * MON-FRI |
周一至周五 09:00 执行 |
| 每天每 30 秒检测一次状态 | 0/30 * * * * ? |
每 30 秒触发 |
| 每天 8 点到 20 点,每小时执行一次 | 0 0 8-20 * * ? |
8:00–20:00 每整点执行 |
| 每月最后一天 23:59 生成月报 | 0 59 23 L * ? |
每月最后一天晚上 11:59 执行 |
Linux crontab(无秒字段)等价版本,直接去掉首个 0。





