跳轉到

建立 2026-09-14 更新 2026-09-14

排程 crontab

crontab 讓系統在指定時間幫你跑指令。備份、清暫存、定期拉資料,都不必自己守著。腳本寫好之後,這是最常見的下一步。

時間格式

分 時 日 月 星期  指令
欄位 範圍
0–59
0–23
1–31
1–12
星期 0–7(0 與 7 都是週日)

* 代表任何值。範例:

*/10 * * * *  ~/bin/healthcheck.sh
0 3 * * *    ~/bin/backup.sh
0 9 * * 1-5  /usr/local/bin/report.sh

每天 03:00、每 10 分鐘、週一到週五早上 9 點。

編輯與列出

crontab -l
crontab -e

第一次會問編輯器,選 nano 即可。語法錯時,存檔可能被拒絕。每個人有自己的 crontab,系統層則看 /etc/cron.d//etc/cron.daily/

環境與輸出

cron 跑的環境很精簡:PATH 往往只有 /usr/bin:/bin。腳本裡請寫絕對路徑,或在 crontab 開頭自己設:

PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash
0 3 * * * /home/alice/bin/backup.sh >> /home/alice/logs/backup.log 2>&1

沒有重新導向時,有些系統會把輸出寄成 mail,你以為沒跑、其實信在 /var/mail

測試先手動跑

用完整路徑在終端機先執行一次腳本,成功再放進 crontab。權限、相對路徑、沒有 export 的變數,是最常見的失敗原因。

systemd timer(知道即可)

較新的發行版也可用 systemd timer 取代 cron,好處是 systemctl status 與 journal 同一套工具。入門仍建議先會 crontab,夠用也最好查。

總結

crontab -e 寫時間與絕對路徑指令,輸出導向 log。跟 Bash 腳本 搭配,重複工作就可以下班自己跑。