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 教學

Cron 源自希臘語 "chronos"(時間),是 Linux 系統中用於自動執行排程任務的守護進程。無論是每日備份資料庫、定時清理日誌,還是週期性發送報表,Cron 都能輕鬆勝任。本文將從服務管理、配置語法到實戰範例,帶你全面掌握 Crontab 的核心用法。

Cron 服務的啟動與管理

Cron 為 Linux 內建服務,但預設不會開機自啟。常用管理指令如下:

/sbin/service crond start    # 啟動服務
/sbin/service crond stop     # 停止服務
/sbin/service crond restart  # 重啟服務
/sbin/service crond reload   # 重新載入配置

若需開機自啟,可在 /etc/rc.d/rc.local 中加入啟動指令:

/sbin/service crond start

Crontab 檔案的查看、編輯與刪除

Cron 將排程任務儲存在 crontab(cron table)檔案中。系統級配置位於 /etc/crontab,使用者級配置則各自存放於 /var/spool/cron/ 目錄下。

  • crontab -l:列出目前使用者的排程
  • crontab -e:編輯排程(預設使用 vi,可透過 export VISUAL='editor' 更換編輯器)
  • crontab -r:刪除目前使用者的所有排程

Root 身份下可加 -u USERNAME 操作特定使用者的排程,例如 crontab -e -u joey。

注意:Cron 服務每分鐘不僅掃描 /var/spool/cron,也會讀取 /etc/crontab。前者為使用者級任務,後者為系統級任務。

Crontab 語法詳解

標準 crontab 行包含 7 個欄位(系統級)或 6 個欄位(使用者級):

欄位說明範圍/格式
1分鐘0-59
2小時0-23
3日期1-31
4月份1-12 或 Jan、Feb 等縮寫
5星期0-7(0 與 7 均為週日)或 Sun、Mon 等縮寫
6使用者名稱(僅系統級)執行身份
7執行指令完整路徑

常用特殊符號

  • *:通配符,表示「每一個」
  • */n:每 n 個單位執行一次(如 */2 代表每 2 小時)
  • a-b:範圍(如 1-5 代表 1 到 5)
  • a,b,c:離散列表(如 1,10,22 代表 1 號、10 號、22 號)

實戰範例解析

# 每天凌晨 03:12 備份 /etc 目錄
12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

# 每月 13 號週一 15:30 執行(數字與英文混用皆可)
30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

# 以 joey 身份每小時第 15 分鐘執行
15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

# 每兩小時執行一次(0, 2, 4... 22 點)
0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

# 每小時的 15 分與 30 分執行
15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

# 每月 1-7 號,每兩小時的 15 分與 30 分執行
15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

# 每天 16:18 執行目錄下所有腳本
18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

輸出重導向說明

>> /dev/null 2>&1 將標準輸出與標準錯誤均導向 /dev/null(黑洞裝置),避免產生郵件通知。若需保留日誌,可改為:

>> /home/user/somecommand.log 2>&1

重點指令速查表

  • crontab -l:查看目前排程
  • crontab -e:編輯排程
  • crontab -r:刪除排程
  • crontab -u USERNAME -e:Root 編輯指定使用者排程
  • 系統級任務直接編輯 /etc/crontab

掌握 Crontab,讓伺服器自動處理重複性工作,釋放你的雙手與精力專注於更有價值的事務。

Copyright © Windows教程網 All Rights Reserved