Cron 作业按周期性间隔进行安排,使用基于 unix-cron 的格式指定。您可以定义时间表,以便让您的作业每天运行多次,或在特定的日期和月份运行。(虽然我们不再推荐使用,但现有作业仍支持旧版 App Engine cron 语法。)
Cron 作业格式
时间表使用 unix-cron 字符串格式 (* * * * *
) 定义,该格式表示一行中的五个字段,指示应在何时执行作业。
您可以使用 Google Cloud Console、Google Cloud CLI 或 Cloud Scheduler REST API 来设置您的时间表。
时间字段具有以下格式和可能的值,并且必须遵循以下顺序:
字段 | 有效值的范围 |
---|---|
分钟 | 0-59 |
小时 | 0-23 |
日期 | 1-31 |
月 | 1-12(或 1 月到 12 月) |
周几 | 0-6(或周日至周六;周日为 7) |
特殊字符
- 字段可以包含星号 (
*
),始终表示“倒数第一个”。 - 范围是用连字符 (
-
) 分隔的两个数字,指定范围包含边界值。 - 如果后跟一个范围,
/NUMBER
会指定跳过该范围内对应的数字值。例如,可以在Hour
字段中使用0-23/2
和*/2
指定每两小时执行一次。 - 列表是用英文逗号分隔的数字 (或范围) 集 (
,
)。例如,Day of the month
字段中的1,2,5,6
可指定在当月第 1 天、第 2 天、第 5 天和第 6 天执行一次。
时区
您可以在 Google Cloud 控制台(在创建作业页面上,从列表中选择时区)或选择创建作业时通过 gcloud
--time-zone
标志选择用于评估时间表的时区。默认时区为 Etc/UTC
。
对于某些时区,夏令时可能会导致作业运行或意外运行。这是因为 Cloud Scheduler 按挂钟时间运行。如果时间可能会发生两次(例如,时钟倒退的情况),而此时已安排了您的作业,则您的计划作业可能会观察到执行异常。
如果您的作业需要非常具体的节奏,您可能需要考虑选择不考虑夏令时的时区。具体而言,建议使用 Cloud Scheduler 世界协调时间 (UTC),以完全避免此问题。
示例时间表
下表显示了一些示例 cron 作业时间表及其说明:
示例时间表 | Cron 作业格式 |
---|---|
每分钟 | * * * * * |
每个星期六的 23:45 (11:45 PM) | 45 23 * * 6 |
每周一上午 9:00(上午 9:00) | 0 9 * * 1 |
每周日上午 04:05(凌晨 4:05) | 5 4 * * SUN |
每个工作日的 22:00(晚上 10:00) | 0 22 * * 1-5 |