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 實戰筆記:用戶級/系統級配置、常見陷阱(環境變數/2分鐘延遲/郵件風暴)、最佳實踐與維基百科詞條精華

編輯:Linux 教學

核心配置檔案位置

  • /var/spool/cron/username:用戶級 crontab (由 crontab -e 維護)
  • /etc/crontab:系統級,含 user 欄位
  • /etc/cron.d/:系統級模組化片段 (推薦生產環境)
  • /etc/cron.hourly/daily/weekly/monthly/:run-parts 執行的腳本目錄

兩種新增任務方式

方式一:crontab -e 互動編輯

crontab -l > crontab.bak          # 備份
crontab -e                        # 進入 vim 編輯
# 格式:分 時 日 月 周 命令
10 3 * * 0,6 /path/hello          # 週六日 3:10
15 4 * * 4-6 /path/hello          # 週四至六 4:15
crontab crontab.bak               # 還原/導入

方式二:直接投放 /etc/cron.d/

echo "*/1 * * * * root /opt/bin/test-cron.sh" > /etc/cron.d/test-cron
# cron daemon 秒級掃描該目錄,無需重啟服務

at 單次排程補充

at -f script.sh -v 10:25   # 今日 10:25 執行一次
atq                        # 查看隊列
atrm job_id                # 刪除任務

三大經典陷阱 (源自維基百科 Crontab 詞條)

  1. 測試間隔 < 2 分鐘不執行:cron 啟動時讀取配置需約 2 分鐘,新任務若設定間隔過短會被跳過。解決:systemctl reload crond 或設定較長間隔測試。
  2. X11 圖形程式需 DISPLAY:DISPLAY=:0.0 /path/gui_app 或腳本內 export DISPLAY=:0.0。
  3. 命令中 % 必須轉義 \%:否則被當作換行符截斷。建議將複雜命令封裝腳本避開。

第零大坑:環境變數不匹配

命令列手動跑通,cron 卻不執行,90% 是 PATH、LD_LIBRARY_PATH、JAVA_HOME 等變數缺失。
鐵律:腳本開頭 source /etc/profile 或顯式 export 所有依賴變數,命令用絕對路徑。

必用技巧:輸出重導向防郵件爆炸

command >/dev/null 2>&1
# 或保留日誌
command >>/var/log/cron_job.log 2>&1

前提:腳本內部已妥善處理正常輸出(寫入專用日誌檔)。

crontab 格式備忘錄 (維基標準)

# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 7) (Sun=0 or 7)
# | | | | |
# * * * * *  command

Linux 專屬 / 步長擴充

*/15 在 Minute 欄位表示每 15 分鐘,Linux (cronie, systemd-cron) 支援;商業 Unix (AIX, Solaris) 可能不支援,需展開列舉。

Copyright © Windows教程網 All Rights Reserved