排程 crontab
crontab 讓系統在指定時間幫你跑指令。備份、清暫存、定期拉資料,都不必自己守著。腳本寫好之後,這是最常見的下一步。
時間格式
| 欄位 | 範圍 |
|---|---|
| 分 | 0–59 |
| 時 | 0–23 |
| 日 | 1–31 |
| 月 | 1–12 |
| 星期 | 0–7(0 與 7 都是週日) |
* 代表任何值。範例:
每天 03:00、每 10 分鐘、週一到週五早上 9 點。
編輯與列出
第一次會問編輯器,選 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 腳本 搭配,重複工作就可以下班自己跑。