crontab 命令選項| 選項 | 說明 |
|---|---|
-u <user> | 指定用戶(需 root 權限) |
-l | 列出該用戶的排程任務 |
-r | 刪除該用戶所有排程任務 |
-e | 編輯該用戶的排程任務 |
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:必填,執行的命令、腳本或程式路徑未指定欄位用 * 佔位,代表「每一個單位」。
| 符號 | 含義 | 範例 |
|---|---|---|
* | 所有可能值 | * * * * * 每分鐘執行 |
/ | 頻率/步長 | */5 * * * * 每 5 分鐘 |
- | 範圍 | 9-18 * * 1-5 工作日 9-18 點 |
, | 離散列舉 | 1,15,30 * * * * 第 1、15、30 分鐘 |
/etc/crontabSHELL=/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)。
/etc/cron.d/:自定義系統級排程檔,語法同 /etc/crontab(需指定用戶欄位)/var/spool/cron/<user>:用戶級排程檔,勿直接編輯,用 crontab -ecrond 每分鐘自動重讀,無需重啟服務# 每天備份資料庫至 /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
grep CRON /var/log/cronsource /etc/profile> /tmp/job.log 2>&1