如何构建 cron 表达式
cron 表达式是在 Linux、云平台、CI/CD 流水线和任务调度器上定义周期性计划的标准方式。语法紧凑但不直观 · 可视化生成器能精确告诉您任务何时执行。
cron 语法
cron 表达式有 5 个字段:
┌───────────── 分(0-59)
│ ┌───────────── 时(0-23)
│ │ ┌───────────── 日(1-31)
│ │ │ ┌───────────── 月(1-12)
│ │ │ │ ┌───────────── 星期几(0-6,周日 = 0)
│ │ │ │ │
* * * * *
常见 cron 计划
| 计划 | 表达式 | 含义 |
|---|---|---|
| 每分钟 | * * * * * |
每 60 秒运行一次 |
| 每 5 分钟 | */5 * * * * |
在 :00、:05、:10、:15… |
| 每小时 | 0 * * * * |
每小时的开头 |
| 每天午夜 | 0 0 * * * |
每天 00:00 一次 |
| 每天 9 点 | 0 9 * * * |
每天 09:00 一次 |
| 每周一 8 点 | 0 8 * * 1 |
每周一 |
| 每月 1 日 | 0 0 1 * * |
每月 1 日午夜 |
| 工作日 18 点 | 0 18 * * 1-5 |
周一至周五 |
如何构建 cron 表达式
- 定义您的计划· 使用可视化控件选择分、时、日、月和星期几的值。或从预设开始,如「每小时」或「每天午夜」。
- 预览执行时间· 生成器会显示接下来 5 次运行时间,验证计划是否正确。
- 复制表达式· 粘贴到您的 crontab、CI/CD 配置或云调度器中。
特殊字符
| 字符 | 含义 | 示例 |
|---|---|---|
* |
每个值 | * * * * * = 每分钟 |
*/n |
每 n 个 | */15 * * * * = 每 15 分钟 |
, |
多个值 | 0 8,12,18 * * * = 8 点、中午、18 点 |
- |
范围 | 0 9-17 * * * = 每小时(9–17 点) |
小贴士
- 始终检查下一次执行· cron 表达式很容易出错。预览会精确显示任务何时触发,部署前请验证。
- 从预设开始· 先选择「每天」或「每小时」这样的常见计划并调整,而不是从零开始编写。
- 注意时区· cron 时间使用系统时区(服务器上通常为 UTC)。如果您要北京时间 9 点,夏令时期间在 UTC 中是
0 1 * * *。 - 用短间隔测试· 设置新的 cron 时,先用
*/5 * * * *(每 5 分钟)测试以确认其运行,然后切换到最终计划。
常见问题
cron 表达式的格式是什么?
标准 cron 表达式有 5 个由空格分隔的字段,分别表示分(0-59)、时(0-23)、日(1-31)、月(1-12)和星期几(0-6,其中 0 是周日)。星号(*)表示该字段的「每个」值。
cron 中的 */5 是什么意思?
*/5 语法表示「每 5 个」。在分字段中,*/5 表示每 5 分钟(0、5、10、15…)。在时字段中,*/5 表示每 5 小时。它适用于任意字段。
cron 表达式在所有平台上都相同吗?
5 字段格式在 Linux cron、AWS EventBridge、GitHub Actions 和大多数调度系统上是标准。某些平台会添加第 6 个字段用于秒或年份。请查阅您平台的文档。
如何为每月最后一天安排任务?
标准 cron 没有「最后一天」关键字。可以使用变通方法,如每天运行并在脚本中检查日期,或使用平台特有的扩展(AWS EventBridge 支持 L 表示「last」)。