LinuxMastery
•
•
By asdlkfj
LinuxMastery 19: 定時任務 Crontab
讓系統自動幫你工作
備份資料庫、清理暫存檔、定期發送報表,這些重複性的工作不該由人來做。crontab 是 Linux 內建的排程工具,能精確到「分」來執行任務。
核心指令詳解
編輯排程:
crontab -e這會開啟編輯器 (通常是 vi)。
查看排程:
crontab -l語法結構:
分 時 日 月 週 指令*代表「每」。*/5代表「每隔 5」。
範例:
# 每天凌晨 3:30 執行備份腳本 30 3 * * * /home/hank/backup.sh # 每週一早上 8:00 重啟 nginx 0 8 * * 1 systemctl restart nginx # 每 5 分鐘執行一次同步 */5 * * * * /usr/bin/python3 /app/sync.py
實戰心法
Crontab 最常見的坑是 環境變數。當你在終端機執行指令時,系統有載入 .bashrc,所以找得到 python 或 java。但在 Crontab 執行時,環境是非常乾淨的,可能找不到指令。解決方法:
- 使用絕對路徑:寫
/usr/bin/python3而不是python3。 - 在 Crontab 開頭定義 PATH:
PATH=/usr/local/bin:/usr/bin:/bin。 - 將輸出重導向 Log,方便除錯:
30 3 * * * /script.sh >> /var/log/cron_job.log 2>&1。