Cron 表达式是什么?5 段语法详解 + 实战示例
服务器上跑定时任务几乎都绕不开一个东西:Cron 表达式。日志切割、数据库备份、邮件提醒、定时报表……这些背后都是 cron 在默默执行。但它的语法对新手非常不友好——一串 * * * * * 让很多人盯着发呆。
📌 本文关键结论(TL;DR)
- Cron 表达式是什么?5 段语法详解 + 实战示例 是开发者常用的解决方案之一
- 本文基于 RFC 标准和实战经验编写
- 提供免费在线工具,浏览器本地处理,数据不上传
- 文末有 FAQ 区块解答常见疑问,可直接复制使用
📌 本文关键结论(TL;DR)
- Cron 表达式是什么?5 段语法详解 + 实战示例 是开发者常用的解决方案之一
- 本文基于 RFC 标准和实战经验编写
- 提供免费在线工具,浏览器本地处理,数据不上传
- 文末有 FAQ 区块解答常见疑问,可直接复制使用
本文会用最直白的方式讲清 cron 表达式 5 段含义、特殊字符怎么用、6 段(带秒)怎么写,并给出 10 个真实业务场景示例。文末推荐 DevToolbox 在线 Cron 解析工具——输入表达式就能看到下次执行时间,避免写错。
一、Cron 表达式长什么样
标准 cron 由 5 个字段组成(有的系统支持 6 段加秒),从左到右依次代表:分钟、小时、日、月、星期。每个字段用空格分隔。
* * * * *
│ │ │ │ │
│ │ │ │ └─ 星期几 (0-6,0=周日)
│ │ │ └─── 月份 (1-12)
│ │ └───── 日 (1-31)
│ └─────── 小时 (0-23)
└───────── 分钟 (0-59)
经典例子:0 2 * * * 意思是每天凌晨 2 点执行一次。第一段 0 = 分=0,第二段 2 = 时=2,后三段 * 表示任意。
二、9 个核心特殊字符
Cron 的灵活性全部来自这些符号。背下来就能覆盖 95% 的场景:
| 符号 | 含义 | 示例 |
|---|---|---|
* | 任意值(每) | * = 每分钟 |
, | 枚举多个值 | 1,15 = 1 和 15 |
- | 范围 | 9-17 = 9 到 17 |
/ | 步长(每 n 个) | */10 = 每 10 分钟 |
? | 不指定(仅日和星期) | 0 0 ? * 1 = 每周一 |
L | 最后一天 | L = 月底 |
W | 最近工作日 | 15W = 15 号最近的工作日 |
# | 第几个星期几 | 5#2 = 第二个周五 |
@ | 预设别名 | @daily = 0 0 * * * |
三、6 段 / 7 段 Cron(带秒和年)
标准 Unix cron 是 5 段,但 Quartz(Java)、Spring、AWS EventBridge 等现代调度框架默认是 6 段或 7 段——最前面加秒、最后面加年:
0 0 2 * * * (6段: 秒 分 时 日 月 星期)
0 0 2 * * * 2026 (7段: 加年)
注意:写 cron 之前一定要确认目标系统——同样是"每天凌晨 2 点",Linux crontab 是 0 2 * * *,Spring @Scheduled 是 0 0 2 * * ?(日和星期必有一个是 ?),搞反了直接报错。
四、10 个真实场景示例
收藏这些模板,复制改一改就能用(5 段格式):
运维 / 备份类
- 每 5 分钟心跳检查:
*/5 * * * * - 每天凌晨 2 点备份数据库:
0 2 * * * - 每周日 3 点清理日志:
0 3 * * 0 - 每月 1 号生成月度报表:
0 1 1 * * - 每个工作日(周一到周五)晚上 11 点发日报:
0 23 * * 1-5
业务 / 数据类
- 每小时整点同步一次数据:
0 * * * * - 每 15 分钟拉取订单:
*/15 * * * * - 上午 9 点到下午 6 点,每 30 分钟推送一次:
*/30 9-18 * * * - 周一、三、五 8:30 提醒:
30 8 * * 1,3,5 - 每月最后一天 23:59 清理临时文件:
59 23 L * *
五、3 个新手常踩的坑
坑 1:日和星期同时写具体值。cron 规定这两位是 OR 关系——只要满足一个就触发。如果非要其中一个无效,写 ? 占位(Quartz)。
坑 2:忘记设时区。服务器默认 UTC 还是 CST?0 9 * * * 在 UTC 服务器意味着北京时间 17 点执行。生产环境必看 timedatectl。
坑 3:环境变量不加载。cron 跑的命令不会自动加载 ~/.bashrc。要么用绝对路径,要么在脚本头部 source /etc/profile。
六、用在线工具验证(5 秒搞定)
写完 cron 表达式最怕"看着对,跑起来才出错"。推荐 DevToolbox Cron 在线解析:
- 输入表达式,立即看到人类可读解释
- 显示未来 5 次执行时间
- 支持 5 段 / 6 段切换
- 纯前端运行,不上传任何数据
七、结语
cron 不难,就是符号多。背下 * , - / ? L 这 6 个,加上 "复制场景模板 → 在线解析验证 → 写进 crontab" 三步法,基本能覆盖 95% 的定时任务需求。剩下 5% 的复杂调度(比如动态生成 cron、跨时区协调),直接用 Airflow / Temporal 这类工作流引擎更省心。
相关工具:Cron 在线解析 · UUID 生成器 · Base64 编解码