LinuxMastery By asdlkfj

LinuxMastery 19: 定時任務 Crontab

讓系統自動幫你工作

備份資料庫、清理暫存檔、定期發送報表,這些重複性的工作不該由人來做。crontab 是 Linux 內建的排程工具,能精確到「分」來執行任務。

核心指令詳解

  1. 編輯排程

    crontab -e
    

    這會開啟編輯器 (通常是 vi)。

  2. 查看排程

    crontab -l
    
  3. 語法結構
    分 時 日 月 週 指令

    • * 代表「每」。
    • */5 代表「每隔 5」。
  4. 範例

    # 每天凌晨 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,所以找得到 pythonjava。但在 Crontab 執行時,環境是非常乾淨的,可能找不到指令。解決方法

  1. 使用絕對路徑:寫 /usr/bin/python3 而不是 python3
  2. 在 Crontab 開頭定義 PATH:PATH=/usr/local/bin:/usr/bin:/bin
  3. 將輸出重導向 Log,方便除錯:30 3 * * * /script.sh >> /var/log/cron_job.log 2>&1