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 crontab 定時任務完整指南:時間格式、編輯/查看/刪除、系統級與用戶級、環境變數坑、日誌與重導向

編輯:Linux 教學

時間格式速查

* * * * *  執行命令
分 時 日 月 周
# 常用範例
*/5 * * * *     每 5 分鐘
0 * * * *       每小時整點
0 0 * * *       每天午夜
0 0 * * 0       每週日午夜
0 0 1 * *       每月 1 號午夜
0 0 1 1 *       每年 1 月 1 號午夜

crontab 指令操作

指令功能
crontab -e編輯當前用戶 crontab (vim)
crontab -l列出當前用戶 crontab
crontab -r刪除當前用戶 crontab
crontab -u user -eroot 編輯指定用戶 crontab
crontab file從檔案載入 crontab

系統級 crontab (/etc/crontab)

# 格式多一欄「使用者」
分 時 日 月 周  user  command
0 7 * * * root mpg123 ~/wakeup.mp3
0 4 * * 0 root emerge --sync && emerge -uD world
0 2 1 * * root rm -f /tmp/*
0 8 6 5 * root mail robin < /home/galeki/happy.txt
  • 直接編輯 /etc/crontab 無需 crontab 指令,cron daemon 會自動讀取。
  • /etc/cron.d/ 目錄下放置獨立檔案同樣生效(建議生產環境用此方式模組化管理)。

特殊符號進階

  • *:所有值
  • ,:列舉 1,3,5
  • -:範圍 1-5
  • /:步長 */10 每 10 分鐘,10-20/2 10-20 每 2
# 每兩小時
0 */2 * * * echo "break"

# 晚 11 點到早 8 點每兩小時,另加早 8 點
0 23-7/2,8 * * * echo "dream"

# 每月 4 號及週一至三早 11 點
0 11 4 * 1-3 command

服務管理

systemctl status crond      # 狀態
systemctl start crond       # 啟動
systemctl enable crond      # 開機自啟
# 舊版
service crond status/start/restart
chkconfig --level 35 crond on

必避大坑:環境變數

cron 執行環境極度精簡:僅有 SHELL=/bin/sh、HOME、LOGNAME、PATH=/usr/bin:/bin。
解決方案:

  1. 腳本內 export PATH=... 完整路徑。
  2. 命令用絕對路徑 /usr/local/bin/python3。
  3. 或在 crontab 頭部定義 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin。

輸出重導向防郵件風暴

# 標準輸出+錯誤輸出丟棄
* * * * * /path/script.sh >/dev/null 2>&1

# 追加記錄到日誌 (推薦)
* * * * * /path/script.sh >>/var/log/script.log 2>&1

未重導向時,cron 會郵件發送給用戶,長期積壓可能撐爆 /var/spool/mail。

啟動延遲測試陷阱

新增任務後,cron 需 至少 2 分鐘 重載配置才會執行。測試時請將時間設為 當前+3分鐘,或 systemctl reload crond 強制重載。

Copyright © Windows教程網 All Rights Reserved