Crontab

何謂 Crontab

  • Crontab 在 Linux 裡面是排程表的意思 =>也就是 Cron + Table

Crontab 可以幹嘛

  • 我們通常會把一些每小時、每日、每月之類固定時間要做的工作丟到 Linux 系統的 crontab 中去執行。
    EX:每日要統計昨天網站的活動資訊做數據分析之類的工作。

Crontab 基本指令

  • 查看自己的 crontab 內容
    ​​​​crontab -l
    
  • 編輯 crontab 內容
    ​​​​crontab -e
    
  • 刪除目前所有的 crontab (謹慎使用)
    ​​​​crontab -r
    

設定 Crontab 時間

  • Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

  • 依序是 分鐘, 小時, 日期, 月份, 星期, command

  • 參數為 0-59, 0-23, 1-31, 1-21, 0-6, 需要執行的 command

  • 可以至此網頁驗證是否設定正確

撰寫 shell script

  • 撰寫原因:Crontab 時間設定完成後,需要有可執行腳本
  • 示範簡易版:
    • 新增檔案: touch demo.sh
    • 編輯:vi demo.sh
      ​​​​​​​​# demo.sh
      ​​​​​​​​echo "Hello World"
      
  • 注意: 編輯完後,要讓 demo.sh 變為可執行檔
    • 輸入: chmod +x <檔案名稱>

Crontab & shell script 結合

  • 步驟:
    1. 進入編輯 Crontab 畫面: crontab -e
    2. 設定時間 & shell script 絕對路徑:
      • */1 * * * * /home/zack_hsu/demo.sh

[進階] 設定 Crontab 紀錄存取位置

  • Crontab & shell script 結合 步驟2中,改為:
    • */1 * * * * /home/zack_hsu/demo.sh >> /home/zack_hsu/mycrontab.log 2>&1 即可。

[進階] 忘記設定 Crontab 紀錄存取,但是Crontab沒有正確執行,要去哪看錯誤訊息?

  • cat /var/spool/mail/<執行crontab的USER> 可以看到
    • ex: cat /var/spool/mail/root
    • 補充:這裡只會紀錄錯誤訊息,超過執行的就不會顯示了。

參考文章