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 完整指南:從服務管理到 crontab 實戰

編輯:Linux 教學

Cron 是 Linux 系統級定時任務調度服務,支援分鐘級精度,廣泛用於備份、日誌輪轉、腳本自動化等場景。本文涵蓋服務控制、crontab 語法、系統級配置與最佳實踐。

Cron 服務管理

# 啟動/停止/重啟/重載
systemctl start|stop|restart|reload crond    # systemd 系統
service crond start|stop|restart|reload       # SysVinit 兼容

# 開機自啟
systemctl enable crond
# 或傳統方式
echo "/sbin/service crond start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

用戶級 crontab 操作

crontab -u USER -e    # 編輯指定用戶任務(root 需 -u)
crontab -u USER -l    # 列出任務
crontab -u USER -r    # 刪除所有任務

編輯時進入 vi,每行一條任務,格式:

* * * * *  command-to-execute
- - - - -
| | | └─ 星期 (0-7) (0/7=週日)
| | └──── 月份 (1-12)
| └────── 日期 (1-31)
└──────── 小時 (0-23)
└──────── 分鐘 (0-59)

特殊符號與範例

符號含義範例
*所有取值* * * * * 每分鐘執行
*/n每 n 個單位*/5 * * * * 每 5 分鐘
a-b範圍8-18 * * * 8~18 點每小時
a,b,c離散列表1,15,30 * * * * 每小時第 1/15/30 分

實用範例:

# 每天 6:00 問候
0 6 * * * echo "Good morning." >> /tmp/test.txt

# 每 2 小時提醒休息
0 */2 * * * echo "Have a break." >> /tmp/test.txt

# 23:00~07:00 每 2 小時 + 08:00
0 23-7/2,8 * * * echo "Good dream." >> /tmp/test.txt

# 每月 4 號 & 每週一至三 11:00
0 11 4 * 1-3 /path/to/script.sh

# 1 月 1 日 04:00
0 4 1 1 * /path/to/yearly.sh

系統級 /etc/crontab 與 /etc/cron.d/

/etc/crontab 格式多一個 USER 欄位,適用於系統維護任務:

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

自定義系統任務建議放入 /etc/cron.d/ 目錄(每文件一任務),便於包管理與版本控制。

進階技巧與避坑指南

  • 輸出重定向:Cron 默認將 stdout/stderr 郵件發送給 MAILTO 用戶,建議 >/dev/null 2>&1 或導向日誌文件。
  • 環境變量:Cron 環境極簡(無 PATH、HOME 等),腳本內使用絕對路徑,或在 crontab 開頭定義 PATH。
  • 執行權限:腳本需 chmod +x,shebang 指定解釋器(#!/bin/bash)。
  • 並發控制:使用 flock 或 run-one 防止任務重疊執行。
  • 日誌審計:journalctl -u crond 或 /var/log/cron 查看執行記錄。
Copyright © Windows教程網 All Rights Reserved