Linux crontab 排程與自動化任務示意圖

← INSIGHTS & PERSPECTIVES | DevOps

Linux crontab 排程設定教學:時間格式、特殊字元與常用範例

說明 Linux crontab 如何查看、編輯、刪除與設定排程,包含五欄時間格式、星號、逗號、區間與每隔幾分鐘範例。

Linux crontab 可用固定時間格式執行週期性任務,例如每天備份、每 10 分鐘檢查服務或每月產生報表。設定時最重要的是看懂五個時間欄位,並確認任務使用絕對路徑與正確環境變數。

如何查看與編輯 crontab?

crontab 的常用操作包含查看、編輯與刪除。一般使用者可管理自己的 crontab,具 sudo 權限者也可查看或編輯指定使用者的 crontab。

查看自己的 crontab:

```bash

crontab -l

```

查看指定使用者的 crontab:

```bash

sudo crontab -u gtwang -l

```

編輯自己的 crontab:

```bash

crontab -e

```

編輯指定使用者的 crontab:

```bash

sudo crontab -u gtwang -e

```

刪除自己的 crontab:

```bash

crontab -r

```

刪除前建議先用 `crontab -l > backup.cron` 備份,因為 `crontab -r` 不會逐項詢問。

crontab 時間格式怎麼看?

crontab 使用五個時間欄位,依序代表分鐘、小時、日期、月份與星期。每一列後方接要執行的 command。

格式如下:

```text

```

在使用者自己的 crontab 中,通常不需要寫 `user-name` 欄位;`/etc/crontab` 這類系統層級檔案才常見 user 欄位。

crontab 常用範例有哪些?

crontab 範例最好從需求句子反推時間欄位。先寫出「每天幾點」、「每週幾」、「每隔多久」,再填入五欄格式。

```bash

30 08 * /home/gtwang/script.sh --your --parameter

30 18 0 yourcommand

30 18 Sun yourcommand

30 08 10 06 * yourcommand

30 21 1,15,29 yourcommand

/10 * yourcommand

00 09-18 * yourcommand

```

資訊增益:crontab 裡的 command 建議使用絕對路徑,例如 `/usr/bin/node /app/job.js`。cron 的環境變數比登入 shell 少,很多「手動執行會過、排程不會過」都和 PATH 不同有關。

crontab 特殊字元代表什麼?

crontab 特殊字元用來表達任意時間、多個值、區間與間隔。看懂 `*`、`,`、`-`、`/` 就能處理多數排程。

特殊字元代表意義範例
`*`任意值` *` 每分鐘
`,`多個指定值`0 3,6,9 *` 每天 3、6、9 點
`-`一段區間`0 8-12 *` 8 點到 12 點整點
`/n`每隔 n 單位`/5 *` 每 5 分鐘

如果排程牽涉時區,應確認 server timezone。容器環境、雲端主機與本機開發機的時區可能不同。

crontab 任務如何避免常見錯誤?

crontab 任務最常失敗在路徑、權限、環境變數與輸出未記錄。每個排程都應該能被手動執行,並把 stdout、stderr 寫入 log。

建議寫法:

```bash

/10 * /usr/bin/bash /opt/jobs/check.sh >> /var/log/check-job.log 2>&1

```

檢查表:

檢查項目建議
command 路徑使用絕對路徑
shell明確指定 bash 或 sh
log將 stdout/stderr 寫到檔案
權限確認執行使用者可讀寫目標
重複執行長任務需加 lock 避免疊在一起

若排程任務可能執行超過間隔時間,應加 lock file 或使用 systemd timer、任務佇列等更可控的機制。

常見問題

Qcrontab 的星期 0 是星期幾?

多數 cron 實作中,星期 0 或 7 都代表星期日。也可使用 `Sun` 讓設定較易讀。

Q`crontab -e` 和 `/etc/crontab` 有什麼不同?

`crontab -e` 編輯目前使用者的排程,通常不寫 user 欄位。`/etc/crontab` 是系統層級排程,常會多一欄指定執行使用者。

Q為什麼 crontab 手動執行可以、排程執行失敗?

最常見原因是 PATH、工作目錄、環境變數或權限不同。排程 command 應使用絕對路徑並寫 log。

Q每 10 分鐘執行一次怎麼寫?

可寫成 `/10 * yourcommand`。這代表每個小時的 0、10、20、30、40、50 分執行。

Qcrontab 適合跑所有背景任務嗎?

不一定。簡單週期任務適合 crontab;需要重試、佇列、依賴關係或監控告警的任務,應考慮 systemd timer、任務佇列或工作流系統。

參考資料

最後更新

本文最後更新於 2026-08-27。原文發布於 2020-03-26,本文補上使用者 crontab 與系統 crontab 差異,以及排程除錯檢查表。

延伸閱讀

關於作者 {#author}

Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。

首次發布:2020-03-26