介紹
本篇主要介紹Linux定時任務命令crontab的用法,crontab是定時任務的命令,而crond則是定時任務的啟動服務。crontab的定時任務分為系統任務和使用者任務,其實二者沒有太大的區別。
安裝
在centos中crond預設是安裝好的,如果沒有安裝的話執行以下操作
安裝crond yum -y install vixie-cron yum -y install crontabs 加入開啟啟動服務 chkconfig crond on
啟動
在Centos中crond服務預設是自動啟動的,如果沒有啟動可以手動啟動,具體方法如下。
檢視定時任務是否啟動 service crond status 將定時任務加入系統自動啟動服務 chkconfig crond on
啟動定時任務服務
service crond start
系統任務排程
系統定時任務一般用來執行一些系統方面的操作,比如日誌清理;系統的定時任務可以通過編輯/etc/crontab來設定。-
SHELL:系統要使用哪個shell
-
PATH:系統定時任務執行的命令的路徑,不要把這個PATH和系統環境變數認為是一樣,二者沒有關係,在系統環境變數裡面配置的路徑在這裡不能生效。
-
MAILTO:用來接收郵件的使用者,預設是root,郵箱的內容會儲存在"/var/spool/mail/root"檔案中。
-
HOME:系統定時任務的家目錄。
00 * * * * root run-parts /etc/cron.hourly
使用者任務排程
crontab命令選項
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
-
-e:建立和編輯定時任務,預設是建立和編輯當前使用者的定時任務,只有root可以建立也編輯其它使用者的定時任務。
-
-l:列出當前使用者的定時任務,如果使用了-u引數指定了使用者那麼就是列出指定使用者的定時任務。
-
-r:刪除當前使用者的定時任務,如果使用了-u引數指定了使用者那麼就是刪除指定使用者的定時任務。
-
-i:在刪除使用者命令前加以提示,-i引數不能單獨使用需要結合-r引數以前使用。
兩種排程方式的不同點:
系統定時任務是整個系統級別的定時任務,只有root使用者可以建立,通過在/etc/crontab檔案或者是在/etc/cron.d/目錄中建立定時任務。
使用者定時任務是每個使用者都可以建立的定時任務,通過執行crontab -e進行建立,每個使用者的定時任務儲存在“/var/spool/cron”目錄下每個使用者自己的檔案中。也可以通過“crontab -l”檢視使用者自己的定時任務
兩種排程方式的相同點:
兩種定時任務的建立都是永久的,伺服器重啟後也不會失效;每次建立任務不需要重啟crond服務。
crontab任務格式
minute hour day month week command 順序:分 時 日 月 周
其中:
-
minute: 表示分鐘,可以是從0到59之間的任何整數。
-
hour:表示小時,可以是從0到23之間的任何整數。
-
day:表示日期,可以是從1到31之間的任何整數。
-
month:表示月份,可以是從1到12之間的任何整數。
-
week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。
-
command:要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案。
在以上各個欄位中,還可以使用以下特殊字元:
-
星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
-
逗號(,):可以用逗號隔開的值指定一個列表範圍,如:“1,2,5,7,8,9”,如果是month則表示這幾個月執行該命令。
-
中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
-
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“10-23/2”如果是指小時代表10點到23點每隔2個小時執行一次。例如*/1可以表示每隔一個小時執行一次。
其它限制:
/etc/cron.deny 該檔案中所列使用者不允許使用crontab命令 /etc/cron.allow 該檔案中所列使用者允許使用crontab命令 /var/spool/cron/ 所有使用者crontab檔案存放的目錄,以使用者名稱命名
注意:預設的使用者的shell,path,mailto,home是沒有定義的,可以單獨定義使用者的這幾個變數否則可能會出現使用者找不到一些使用者軟體的命令,具體的定義方法可以參考系統任務的定義,主要還是SHELL、PATH。預設的使用者的這幾個變數資訊如下:
X-Cron-Env:<SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/chen>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=chen>
X-Cron-Env: <USER=chen>
例1:每天的1點到6點和13點到18點,每隔5分鐘執行命令
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin MAILTO=chen HOME=/data/backup */5 01-06,13-18 * * * ./userbackup.sh test
上面定義了每天的1點到6點和13點到18點,每隔5分鐘執行命令。
例2:每天9點到18點每隔2個小時執行一次
0 09-18/2 * * * ./userbackup.sh test
注意:時間範圍01-06是指01:00-06:59,命令後面可以使用“;”連線多個命令
總結
定時任務很實用,而且實用方法也很多,有興趣可以慢慢研究。
備註: 作者:pursuer.chen 部落格:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。 《歡迎交流討論》 |