Cron 表达式
Cron 表达式用于定义系统执行自动扩缩容任务的调度计划。
本文将介绍 Unix cron 格式的表达式(标准 5 字段语法),其精度为分钟级。当表达式中的所有字段都与当前时间匹配时,调度任务将被触发。Cron 调度计划会按照您所选择的时区进行计算与触发。
表达式格式与字段取值范围
* * * * *
│ │ │ │ └── 星期几(day of week)
│ │ │ └──── 月份(month)
│ │ └────── 日期(day of month)
│ └──────── 小时(hour)
└────────── 分钟(minute)
Field | 取值范围 | 说明 |
|---|---|---|
| [0 - 59] | -- |
| [0 - 23] | 24 小时制。 例如,当 CRON 表达式的 |
| [1 - 31] | 并非所有月份都有 31 天。如果您在天数较少的月份里设置为 |
| [1 -12] | -- |
| [0 - 6] |
|
特殊字符与操作符
以下操作符可用于大部分字段:
操作符 | 含义 | 示例 |
|---|---|---|
| 任意值 |
|
| 列表 |
|
| 范围 |
|
| 间隔触发 说明: |
|
示例
本节提供了一些可直接使用的常用表达式模板。如果您需要使用多个运算符组合的复杂表达式,请参考此处的常见示例。
常用模板
使用场景 | Cron 表达式 | 含义 |
|---|---|---|
每分钟 |
| 每分钟运行一次 |
每 5 分钟 |
| 每 5 分钟运行一次 |
每小时 |
| 每小时整点运行 |
每天 09:30 |
| 每天 09:30 运行 |
工作日 09:00 |
| 周一到周五 09:00 运行 |
每月第 1 天 09:00 |
| 每月 1 日 09:00 运行 |
每周日 09:00 |
| 每周日 09:00 运行 |
每天两次 |
| 每天 09:00 和 21:00 运行 |
常见场景
以下示例展示了如何根据常见的工作负载模式,为定时扩缩容任务编写 Unix cron 表达式。
示例 1:工作日高峰时段扩容,工作日非高峰时段缩容
需要创建两个计划:一个用于高峰时段,一个用于非高峰时段。
-
高峰时段:
* 9-18 * * 1-5周一到周五,在 09:00–18:59 之间每分钟运行一次。
-
非高峰:
* 0-8,19-23 * * 1-5周一到周五,在 00:00–08:59 和 19:00–23:59 之间每分钟运行一次。
示例 2:周末节省资源成本 + 周一恢复资源使用
需要创建两个计划:一个用于周末,一个用于周一恢复。
-
周末:
* * * * 0,6周六和周日每分钟运行一次。
-
周一恢复:
0 9 * * 1每周一 09:00 运行。