萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Windows 10 資訊

CentOS 系統 Cron 定時任務配置完整指南

1. crontab 命令選項

選項說明
-u <user>指定用戶(需 root 權限)
-l列出該用戶的排程任務
-r刪除該用戶所有排程任務
-e編輯該用戶的排程任務

2. Cron 語法格式

Minute Hour Day Month DayOfWeek Command
分     時   日   月   週       命令
0-59  0-23 1-31 1-12 0-7     要執行的指令/腳本

欄位說明:

  • Minute:每小時第幾分鐘執行(0-59)
  • Hour:每天第幾小時執行(0-23)
  • Day:每月第幾天執行(1-31)
  • Month:每年第幾個月執行(1-12)
  • DayOfWeek:每週第幾天執行(0 或 7 代表週日)
  • Command:必填,執行的命令、腳本或程式路徑

未指定欄位用 * 佔位,代表「每一個單位」。

3. 特殊符號用法

符號含義範例
*所有可能值* * * * * 每分鐘執行
/頻率/步長*/5 * * * * 每 5 分鐘
-範圍9-18 * * 1-5 工作日 9-18 點
,離散列舉1,15,30 * * * * 第 1、15、30 分鐘

4. 系統級配置檔 /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

環境變數:SHELL、PATH、MAILTO(輸出郵件接收者,空則不寄信)、HOME。
run-parts 機制:依排程執行對應目錄下所有可執行腳本(需 chmod +x)。

5. 目錄結構與最佳實踐

  • /etc/cron.d/:自定義系統級排程檔,語法同 /etc/crontab(需指定用戶欄位)
  • /var/spool/cron/<user>:用戶級排程檔,勿直接編輯,用 crontab -e
  • 修改後 crond 每分鐘自動重讀,無需重啟服務

6. 實用範例

# 每天備份資料庫至 /backup,保留 7 天
0 2 * * * /usr/bin/mysqldump -u root -p'pass' dbname | gzip > /backup/db_$(date +\%F).sql.gz
0 3 * * * find /backup -name 'db_*.sql.gz' -mtime +7 -delete

# 每小時檢查服務狀態,異常則重啟並記錄
0 * * * * systemctl is-active nginx || (systemctl restart nginx && echo "$(date) nginx restarted" >> /var/log/nginx_watchdog.log)

# 工作日早晚高峰每 10 分鐘同步時間
*/10 7-9,17-19 * * 1-5 /usr/sbin/ntpdate ntp.aliyun.com

7. 除錯技巧

  • 檢查執行日誌:grep CRON /var/log/cron
  • 測試命令:先在終端手動執行確認無誤
  • 環境變數陷阱:腳本內使用絕對路徑,或在腳本開頭 source /etc/profile
  • 標準輸出/錯誤重導向:> /tmp/job.log 2>&1
copyright © 萬盛學電腦網 all rights reserved