跳到主要内容
版本:Cloud 开发指南

Cron 表达式

Cron 表达式用于定义系统执行自动扩缩容任务的调度计划。

本文将介绍 Unix cron 格式的表达式(标准 5 字段语法),其精度为分钟级。当表达式中的所有字段都与当前时间匹配时,调度任务将被触发。Cron 调度计划会按照您所选择的时区进行计算与触发。

表达式格式与字段取值范围

* * * * *
│ │ │ │ └── 星期几(day of week)
│ │ │ └──── 月份(month)
│ │ └────── 日期(day of month)
│ └──────── 小时(hour)
└────────── 分钟(minute)

Field

取值范围

说明

minute

[0 - 59]

--

hour

[0 - 23]

24 小时制。

例如,当 CRON 表达式的 hour 字段为 17 时,该字段匹配 17:0017:59 之间的任意时间。

day of month

[1 - 31]

并非所有月份都有 31 天。如果您在天数较少的月份里设置为 31,则该月的计划扩缩容任务不会运行。

month

[1 -12]

--

day of week

[0 - 6]

0 表示周日1 表示周一2 表示周二 …… 以此类推。

特殊字符与操作符

以下操作符可用于大部分字段:

操作符

含义

示例

*

任意值

* * * * * 表示每分钟运行一次。

,

列表

0 9,17 * * * 表示在每天 09:00 和 17:00 运行。

-

范围

0 9-17 * * * 表示在每天 09:00 到 17:00 之间运行。

/

间隔触发

说明: - 可以和 / 组合使用。

*/5 * * * * 表示每 5 分钟运行一次。

10-50/10 * * * * 表示在每小时的第 10、20、30、40、50 分钟运行。

示例

本节提供了一些可直接使用的常用表达式模板。如果您需要使用多个运算符组合的复杂表达式,请参考此处的常见示例

常用模板

使用场景

Cron 表达式

含义

每分钟

* * * * *

每分钟运行一次

每 5 分钟

*/5 * * * *

每 5 分钟运行一次

每小时

0 * * * *

每小时整点运行

每天 09:30

30 9 * * *

每天 09:30 运行

工作日 09:00

0 9 * * 1-5

周一到周五 09:00 运行

每月第 1 天 09:00

0 9 1 * *

每月 1 日 09:00 运行

每周日 09:00

0 9 * * 0

每周日 09:00 运行

每天两次

0 9,21 * * *

每天 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 运行。