紅帽企業 Linux 隨帶幾個自動化任務的工具:cron、at、和 batch。
一、 cron
cron 是一個可以用來根據時間、日期、月份、星期的組合來調度對重復任務的執行的守護進程。
cron 假定系統持續運行。如果當某任務被調度時系統不在運行,該任務就不會被執行。
要使用 cron 服務,你必須安裝了 vixie-cron RPM 軟件包,而且必須在運行 crond 服務。要判定該軟件包是否已安裝,使用 rpm -q vixie-cron 命令。要判定該服務是否在運行,使用 /sbin/service crond status 命令。
1. 配置 cron 任務
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 任務的輸出被郵寄給 MAILTO 變量定義的用戶名。如果 MAILTO 變量被定義為空白字符串(MAILTO=""),電子郵件就不會被寄出。HOME 變量可以用來設置在執行命令或腳本時使用的主目錄。
/etc/crontab 文件中的每一行都代表一項任務,它的格式是:
minute hour day month dayofweek command
minute — 分鐘,從 0 到 59 之間的任何整數
hour — 小時,從 0 到 23 之間的任何整數
day — 日期,從 1 到 31 之間的任何整數(如果指定了月份,必須是該月份的有效日期)
month — 月份,從 1 到 12 之間的任何整數(或使用月份的英文簡寫如 jan、feb 等等)
dayofweek — 星期,從 0 到 7 之間的任何整數,這裡的 0 或 7 代表星期日(或使用星期的英文簡寫如 sun、mon 等等)
command — 要執行的命令(命令可以是 ls /proc >> /tmp/proc 之類的命令,也可以是執行你自行編寫的腳本的命令。)
在以上任何值中,星號(*)可以用來代表所有有效的值。譬如,月份值中的星號意味著在滿足其它制約條件後每月都執行該命令。
整數間的短線(-)指定一個整數范圍。譬如,1-4 意味著整數 1、2、3、4。
用逗號(,)隔開的一系列值指定一個列表。譬如,3, 4, 6, 8 標明這四個指定的整數。
正斜線(/)可以用來指定間隔頻率。在范圍後加上 /<INTEGER> 意味著在范圍內可以跳過 integer。譬如,0-59/2 可以用來在分鐘字段定義每兩分鐘。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份字段中表示每三個月運行一次任務。