iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0
IT Operation

從零開始的 Linux 維運與 Bash 自動化實戰 30 天系列 第 18

Day 18:Crontab 自動化排程管理與定時維運

  • 分享至 

  • xImage
  •  

實作背景與觀念說明
自動化監控腳本若需人工手動觸發,仍無法達成 24 小時不間斷的伺服器營運管理。透過 Linux 內建的 Cron 排程服務與 crontab 指令,能彈性規劃週期性任務,使系統於背景自動按時執行特定巡檢腳本與日誌備份,實現完全無人值守的 DevOps 維運流程。

核心語法解析與設定機制

  • Crontab 時間格式:採用五個欄位(分 時 日 月 週)來精準定義執行週期。例如 * * * * * 代表每分鐘觸發一次,而 0 3 * * * 則代表每日凌晨三點觸發。

  • 絕對路徑規範:因 Cron 在非互動式 Shell 中運作,預設不載入使用者的環境變數(如 $PATH),故指定腳本與輸出路徑時,必須使用 realpath 查得之絕對路徑(如 /home/ubuntu/disk_alarm.sh),避免因路徑錯誤導致執行失敗。

  • 標準輸出與錯誤重導向:運用 >> 累加寫入日誌檔,並搭配 2>&1 將標準錯誤輸出(stderr)同步轉發至標準輸出(stdout),確保巡檢歷史與異常錯誤資訊完整保留於 Log 檔案中。

  • Crontab 常用指令:
    crontab -e:編輯當前使用者的排程任務。
    crontab -l:列出當前使用者的所有排程任務。
    crontab -r:刪除當前使用者的所有排程任務。

  • Crontab 時間格式(五星陣):
    *****要執行的指令或腳本路徑
    1.星期幾 (0 - 6,0 代表週日)
    2.月份 (1 - 12)
    3.日期 (1 - 31)
    4.小時 (0 - 23)
    5.分鐘 (0 - 59)

實作
https://ithelp.ithome.com.tw/upload/images/20260919/20183847xGy7aIwuQ4.png

  • crontab -e 編輯畫面,設定 * * * * * /home/ubuntu/disk_alarm.sh >> /home/ubuntu/disk_cron.log 2>&1 排程。
    https://ithelp.ithome.com.tw/upload/images/20260919/20183847otWEjtc6Pi.png
  • 執行 cat /home/ubuntu/disk_cron.log 檢視自動產出的日誌結果。
    結果分析:排程修正後,系統每分鐘自動執行磁碟告警腳本。日誌成功記錄當前根目錄使用率為 81%,並精準觸發邏輯判斷印出 [WARNING] 告警,驗證 Crontab 自動化排程機制完全建置成功。

上一篇
Day 17:Bash 迴圈控制與多服務批次監控
系列文
從零開始的 Linux 維運與 Bash 自動化實戰 30 天18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言