首頁/部落格/Cron 表達式完全教學:排程任務設定從入門到精通
教學

Cron 表達式完全教學:排程任務設定從入門到精通

系統性學習 Cron 表達式語法,涵蓋基礎格式、特殊字元、常用範例和最佳實踐。適合 DevOps、後端開發者和系統管理員。

奧特線上工具2026/2/138 分鐘閱讀2 次瀏覽
Cron 表達式完全教學:排程任務設定從入門到精通

Cron 表達式完全教學

什麼是 Cron?

Cron 是 Unix/Linux 系統中的定時任務排程器,使用 Cron 表達式來定義任務的執行時間。Cron 表達式是一種簡潔但強大的時間描述格式。

Cron 表達式格式

標準 Cron 表達式由 5 個欄位組成:

┌───────────── 分鐘 (0-59)
│ ┌───────────── 小時 (0-23)
│ │ ┌───────────── 日期 (1-31)
│ │ │ ┌───────────── 月份 (1-12)
│ │ │ │ ┌───────────── 星期 (0-6, 0=週日)
│ │ │ │ │
* * * * *

特殊字元

字元說明範例
*任意值* * * * * 每分鐘
,列舉多個值1,15 * * * * 第 1 和 15 分鐘
-範圍1-5 * * * * 第 1 到 5 分鐘
/步進值*/15 * * * * 每 15 分鐘

常用 Cron 範例

基礎範例

表達式說明
0 * * * *每小時整點
0 0 * * *每天午夜
0 9 * * 1-5週一到週五早上 9 點
0 0 1 * *每月 1 號午夜
0 0 1 1 *每年 1 月 1 日午夜

進階範例

表達式說明
*/5 * * * *每 5 分鐘
0 */2 * * *每 2 小時
0 9,18 * * *每天 9 點和 18 點
0 0 * * 0每週日午夜
30 4 1,15 * *每月 1 號和 15 號凌晨 4:30

實際應用場景

1. 資料庫備份

bash
# 每天凌晨 2 點備份
0 2 * * * /scripts/backup-db.sh

2. 日誌清理

bash
# 每週日凌晨 3 點清理 30 天前的日誌
0 3 * * 0 find /var/log -mtime +30 -delete

3. 健康檢查

bash
# 每 5 分鐘檢查服務狀態
*/5 * * * * /scripts/health-check.sh

4. 報表生成

bash
# 每月 1 號早上 8 點生成月報
0 8 1 * * /scripts/generate-report.sh

最佳實踐

  1. 避免在整點執行:很多任務都設定在整點,可能造成系統負載集中
  2. 加入隨機延遲:在分散式系統中,避免所有節點同時執行
  3. 設定超時機制:防止任務卡住影響下次執行
  4. 記錄執行日誌:方便追蹤和除錯
  5. 使用絕對路徑:Cron 環境的 PATH 可能與互動式 Shell 不同

常見錯誤

忘記時區設定

Cron 預設使用系統時區,在不同環境中可能不一致。建議在 crontab 中明確設定:

bash
CRON_TZ=Asia/Taipei
0 9 * * * /scripts/task.sh

忽略輸出重導向

Cron 任務的輸出預設會發送郵件,建議重導向到日誌檔:

bash
0 * * * * /scripts/task.sh >> /var/log/task.log 2>&1

實用工具推薦

使用我們的 Cron 表達式產生器 [blocked] 可以可視化設定 Cron 排程,即時預覽下次執行時間,還有常用範本可以快速套用。

立即試用相關工具

馬上體驗文章中提到的功能