cron是Linux內建的定時任務排程服務,透過crontab命令編輯任務表,實現腳本、備份、清理等自動化執行。本文涵蓋服務管理、語法規則、範例與進階技巧。
systemctl start crond # 啟動(systemd系統)
systemctl enable crond # 開機自啟
systemctl status crond # 查看狀態
# 傳統SysV
/sbin/service crond start|stop|restart|reload
| 選項 | 功能 |
|---|---|
-u user | 指定用戶(需root) |
-l | 列出任務 |
-r | 刪除所有任務 |
-e | 編輯任務(進入編輯器) |
* * * * * command
分 時 日 月 週
| 欄位 | 範圍 | 說明 |
|---|---|---|
| 分 | 0-59 | |
| 時 | 0-23 | |
| 日 | 1-31 | |
| 月 | 1-12 | |
| 週 | 0-7 | 0或7=週日,1=週一... |
*:所有合法值/n:每n單位(如*/15 = 每15分鐘)-:範圍(8-11 = 8到11點),:離散列表(10,20 = 10號與20號)5 * * * * ls # 每小時第5分
30 5 * * * ls # 每天05:30
30 7 8 * * ls # 每月8號07:30
30 5 8 6 * ls # 6月8日05:30
30 6 * * 0 ls # 每週日06:30
30 3 10,20 * * ls # 每月10、20號03:30
25 8-11 * * * ls # 08-11點每小時第25分
*/15 * * * * ls # 每15分鐘
30 6 */10 * * ls # 每月1、11、21、31號06:30
50 7 * * * root run-parts /etc/cron.daily # 系統每日任務
crontab -e編輯/var/spool/cron/username。/etc/crontab,多user欄位,支援run-parts執行目錄下所有可執行檔。
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
30 5 * * * ls >/tmp/ls.log 2>&1 # 標準輸出與錯誤合併寫入檔案
# 查看執行日誌
grep CRON /var/log/syslog
crontab -e # 新增/編輯
crontab -l # 查看
crontab -r # 刪除全部
crontab -u jp -l # 查看指定用戶(root)
善用cron將重複性運維工作自動化,是Linux系統管理的核心技能之一。