Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux cron 定時任務配置完整指南:語法、範例、系統與用戶級差異

編輯:Linux 教學

cron 是 Linux 系統級任務排程服務,支援分鐘級精度的週期性任務自動化。本文詳細說明 crontab 指令、語法格式、特殊符號、系統級與用戶級配置差異、常見範例與故障排查。

1. crontab 指令選項

選項功能
-u user指定用戶 (需 root)
-l列出當前用戶任務
-r刪除當前用戶所有任務
-e編輯任務 (啟動編輯器)

2. 時間欄位語法

* * * * *  command
分 時 日 月 週  命令
欄位範圍說明
Minute0-59每小時第幾分鐘
Hour0-23每天第幾小時
Day1-31每月第幾天
Month1-12每年第幾月
Week0-7每週第幾天 (0/7=週日)

未指定欄位用 * 佔位。

3. 特殊符號

符號含義範例
*所有可能值* * * * * 每分鐘
,離散列舉10,20,30 * * * * 第 10/20/30 分鐘
-連續範圍8-11 * * * * 8-11 點每分鐘
/步進/間隔*/15 * * * * 每 15 分鐘

4. 配置檔案層級差異

層級檔案位置編輯方式執行身份適用場景
用戶級/var/spool/cron/usernamecrontab -e該用戶個人腳本、備份
系統級/etc/crontabvim 直接編輯指定用戶欄位系統維護、日誌輪轉
系統級/etc/cron.d/建立檔案指定用戶欄位套件安裝任務
週期目錄/etc/cron.hourly/daily/weekly/monthly放入可執行腳本run-parts 執行簡單週期任務

/etc/crontab 格式 (含用戶欄位)

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# 範例
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

5. 常見範例速查

5 * * * * /usr/bin/ls                     # 每小時第 5 分鐘
30 5 * * * /backup/script.sh              # 每天 05:30
30 7 8 * * /backup/script.sh              # 每月 8 號 07:30
30 5 8 6 * /backup/script.sh              # 每年 6 月 8 日 05:30
30 6 * * 0 /backup/script.sh              # 每週日 06:30
30 3 10,20 * * /backup/script.sh          # 每月 10、20 號 03:30
25 8-11 * * * /backup/script.sh           # 每天 08-11 點第 25 分鐘
*/15 * * * * /backup/script.sh            # 每 15 分鐘
30 6 */10 * * /backup/script.sh           # 每月 1、11、21、31 號 06:30
50 7 * * * root run-parts /etc/cron.daily # 每天 07:50 以 root 執行 daily 目錄腳本
10,20,30 * * * * echo "log" >> /tmp/cron.log
0 */2 * * * user /usr/bin/cmd >> /dev/null 2>&1

6. 服務管理與故障排查

# 服務控制
systemctl start|stop|restart|status crond
# 或舊版
service crond start|stop|restart|status
/etc/init.d/crond restart

# 查看執行日誌
grep CRON /var/log/cron
tail -f /var/log/cron

# 常見問題
# 1. 腳本無執行權限 → chmod +x script.sh
# 2. 環境變數缺失 → 腳本內完整路徑 /usr/bin/... 或 source /etc/profile
# 3. 輸出未重導向 → 產生郵件堆積,加 >> /var/log/mycron.log 2>&1
# 4. 時間格式錯誤 → crontab -l 檢查
# 5. cron 服務未啟動 → systemctl enable --now crond

7. 一鍵部署範例腳本

#!/bin/bash
# deploy_cron.sh
cat > /etc/cron.d/myapp <<'EOF'
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 每天 02:00 備份資料庫
0 2 * * * postgres /usr/local/bin/pg_backup.sh >> /var/log/pg_backup.log 2>&1
# 每小時清理暫存
0 * * * * root find /tmp/myapp -type f -mtime +1 -delete
EOF
systemctl reload crond
Copyright © Windows教程網 All Rights Reserved