0 0 1 1,4,7,10 * 在 Cron 運算式解析中開啟 逐欄位說明
| 欄位 | 值 | 符合 |
|---|---|---|
| 分鐘 | 0 | 0 |
| 小時 | 0 | 0 |
| 日 | 1 | 1 |
| 月 | 1,4,7,10 | 1月4月7月10月 |
| 星期 | * | 任意值 |
接下來的執行時間
範例:2026年1月1日 之後的前 6 次執行(UTC)。
- 2026年4月1日週三 00:00
- 2026年7月1日週三 00:00
- 2026年10月1日週四 00:00
- 2027年1月1日週五 00:00
- 2027年4月1日週四 00:00
- 2027年7月1日週四 00:00
各平台寫法
crontab
0 0 1 1,4,7,10 * /path/to/command 用 crontab -e 加入這一行。除非設定了 CRON_TZ 或 TZ,否則依伺服器時區執行。
Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
name: every-quarter
spec:
schedule: "0 0 1 1,4,7,10 *"
timeZone: "Etc/UTC"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: job
image: busybox:1.36
command: ["/bin/sh", "-c", "date; echo run"] 設定 spec.timeZone(Kubernetes 1.27+);未設定時依 controller manager 的時區,通常是 UTC。
GitHub Actions
on:
schedule:
- cron: '0 0 1 1,4,7,10 *'
workflow_dispatch: GitHub Actions 一律使用 UTC,最短間隔為 5 分鐘,負載高時排程可能延後啟動。
Quartz
0 0 0 1 1,4,7,10 ? Quartz 把秒放在最前面,且日與星期其中之一必須寫 ?。星期以 1–7 表示(從週日開始),使用英文縮寫較不易出錯。
Spring
@Scheduled(cron = "0 0 0 1 1,4,7,10 *") Spring 的 @Scheduled(cron = …) 使用六個欄位:秒,再加上一般的五個欄位。
常見問題
› 怎麼在每季最後一天執行?
把月份 3,6,9,12 和每月最後一天的判斷結合起來:0 0 28-31 3,6,9,12 * 再加上日期判斷。
› 0 0 1 1,4,7,10 * 依哪個時區執行?
Cron 使用執行它的機器或服務的時區。在 Linux 上是系統時區,除非設定了 CRON_TZ 或 TZ;Kubernetes CronJob 可設定 spec.timeZone;GitHub Actions 一律使用 UTC。
› 部署前要怎麼檢查這個排程?
在本站的 Cron 運算式解析中開啟 0 0 1 1,4,7,10 *。它會解釋每個欄位,並依本地時間或 UTC 列出接下來的執行時間,全部在瀏覽器中完成。