設置cron任務
本文來自redhat官方文檔
Cron是根據月、天、周、時間的組合設定,周期性的執行特定任務的守護程序。 Cron需要系統處于運行狀態。如果系統未運行,則計劃任務無法被執行。要使用cron服務, 需安裝vixie-cron RPM包,也要確保crond處于運行狀態。用rpm -q vixie-cron來 測定此軟件包是否安裝.用/sbin/service crond status來 測定crond是 否處于運行狀態。 cron的主要配置文件在以下的/etc/crontab文件中:包 含如下行
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
前 四行是有關設置cron任 務運行的環境變量. SHELL變 量的值指定系統使用的SHELL環 境(該 樣例為bash shell),PATH變 量定義了執行命令的路徑。Cron的 輸出以電子郵件的形式發給MSILTO變 量定義的用戶名. 如 果MAILTO變 量定義為空字符串(MAILTO=""), 電子郵件不 會被發送. 執 行命令或腳本時HOME變 量可用來設置家目錄。
文 件/etc/crontab中 每行任務的描述格式如下:
minute hour day_of_month?month day_of_week command
- minute - 從0 到 59的 整數
- hour - 從0到23的 整數
- day - 從1到31的 整數 (必須是指定月份的有效日期)
- month - 從1到12的 整數 (或如Jan或Feb簡寫的月份)
- dayofweek - 從0到7的整數,0或7用來描述周日 (或 用Sun或Mon簡 寫來表示)
- command - 需要執行的命令(可 用as ls /proc >> /tmp/proc或 執行自定義腳本的命令)
對 于以上各語句,星 號(*)表 示所有可用的值. 例 如,*在 指代month時 表示每月執行(需要符合其他限制條件)該命令。
整 數間的連字號(-)表 示整數列,例 如1-4意 思是整數1,2,3,4.
指 定數值由逗號分開。如:3,4,6,8表 示這四個指定整數.
符 號“/”指 定步進設置.“/<interger>”表 示步進值。如0-59/2定 義每兩分鐘執行一次。步進值也可用星號表示。如*/3用 來運行每三個月份運行指定任務.
以“#”開 頭的為注釋行,不 會被執行。
如 文件/etc/crontab所 示,它 在RUN-PART腳 本中指定系統每小時,每天,每周。每月運行/cron.hourly, /etc/cron.daily, /etc/cron.weekly, 和/etc/cron.monthly中 的文件.這 些目錄中的文件為shell腳 本。
如 果一個cron任 務需要定期而不是按小時,天,周,月 來執行,則 需要添加/etc/cron.d目 錄. 這 個目錄下的所有文件和文件/etc/crontab語 法相同. 查 看樣例
# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh
除 了root用 戶之外的用戶可以執行crontab配 置計劃任務。所有用戶定義的crontab存 儲在目錄/var/spool/cron下, 任 務會以創建者的身份被執行。要以特定用戶創建一個crontab, 先 以該用戶登錄,執 行命令crontab -e, 系統會啟動在VISUAL或 者EDITOR中 指定的的編輯軟件編輯crontab. 文 件內容與/etc/crontab格 式相同. 當 更改的crontab需 要保存時,文 件會保存在成如下文件/var/spool/cron/username.文 件名會根據用戶名而不同。
cron 服 務會每分鐘檢查一次/etc/crontab, /etc/cron.d/, 和/var/spool/cron文 件下的變更.如 果發現變化,就 會下載到存儲器中.因 此,即 時crontab文 件改變了,程 序也不需要重新啟動。