Cron 表达式的结构
Cron 是 Unix 世界定时的标准语言,n8n、Linux crontab、各种 CI 调度器都在用。一个标准 Cron 表达式有 5 个字段,用空格分隔:
┌──────── 分钟 (0-59)
│ ┌────── 小时 (0-23)
│ │ ┌──── 日 (1-31)
│ │ │ ┌── 月 (1-12 或 JAN-DEC)
│ │ │ │ ┌ 星期 (0-7,0和7都是周日,MON-SAT)
* * * * *
五个条件都满足的时刻才会触发。例如 30 22 * * * 表示每天晚上 22:30。
特殊符号的含义
| 符号 | 含义 | 示例 |
|---|---|---|
* |
每一个可能的值 | * * * * * 每分钟 |
, |
枚举多个值 | 0 9,18 * * * 每天9点和18点 |
- |
范围 | 0 9-17 * * * 每天9点到17点整点 |
/ |
步进 | */10 * * * * 每10分钟 |
? |
不指定(同*) | 常见于日/周字段 |
最常用的表达式清单
*/5 * * * * 每5分钟
0 * * * * 每小时整点
0 9 * * 1-5 工作日每天早上9点
0 3 * * 0 每周日凌晨3点
0 0 1 * * 每月1号零点
0 0 * * 1,4 每周一和周四零点
15 14 1 * * 每月1号14:15
一个高频大坑:同时填「日」和「周」
当「日」和「星期」两个字段都不是*时,两者是"或"的关系:任一匹配就触发。想表达"每月1号且必须是周一"用标准 cron 写不出来——这种需求要用程序内部二次判断。
写完先验证一遍
手写 cron 很容易错一位就变成每天执行。用我们的Cron表达式解析工具输入表达式,中文解释每个字段的含义,并直接预测接下来5次执行时间——比在服务器上等一天高效得多。