crond——Linux下的計劃任務學習筆記

linux在安裝系統過程中會安裝crond這麼一個服務工具,並隨系統啓動而啓動,成爲守護進程daemon,即後臺服務,目的就是定期檢查是否存在需要週期性執行的任務。

相關的配置文件有/etc/crontab,以及/var/spool/cron/目錄下以用戶名命名的各個用戶的crontab配置文件。而/etc/crontab文件負責系統任務調度,即全局計劃任務,/etc/crontab文件內容如下(以Centos 6.0爲例):

[root@localhost ~]# vi /etc/crontab

SHELL=/bin/bash                                                   #指定執行所用到的shell終端
PATH=/sbin:/bin:/usr/sbin:/usr/bin                         #指定環境變量,以便執行某條命令的時候可不使用絕對路徑
MAILTO=root                                                         #指定執行返回結果發送到指定用戶的郵箱目錄中,默認爲/var/spool/mail/xxx,此處xxx爲root,指代root的郵箱目錄
HOME=/                                                                #指定執行命令或腳本時使用的主目錄

# For details see man 4 crontabs

# Example of job definition:                                   #此處爲crond計劃任務填寫格式說明
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  command to be executed
*/10 * * * * echo "hello world" >> /usr/local/test/test2              #此行意義爲在每天,每月,每小時,每隔10分鐘都執行一次echo "hello world"並把結果輸到/usr/local/test/test2

文件中,屬自定義系統計劃任務。

*號可以有多種定義方式,比如1-2表示從第1到第2分鐘等等;1,2,3,4表示同時在多個時間段執行;*/2表示每2個單位時間執行一次。此類定義均可以複合使用,如23-7/1表示從23到7的時間段內,每個1個時間單位執行某個操作。

一般情況下不建議直接在此文件改動,而是在/etc/cron.d目錄下放置相應的任務腳本,crond執行時,讀取三個地方的配置文件/etc/crontab,和/etc/cron.d,以及每個用戶相應的配置文件,可用crontab -u [user] -l 查看,相應地還有/etc目錄下對應每個按時間執行的腳本目錄,即/etc/cron.hourly,/etc/cron.daily,/etc/weekly,/etc/cron.monthly分別對應每小時,每天,每週,每個月運行一次對應目錄下的腳本,相應地,該規則應該這樣寫(星號從左往右依次代表分,時,天,月,星期):

* * * * * run-parts /etc/cron.hourly

* * * * * run-parts /etc/cron.daily

* * * * * run-parts /etc/cron.weekly

* * * * * run-parts /etc/cron.monthly

舉個例子,

10 * 03 * * run-parts /etc/cron.hourly

意爲每個月的3號那天每小時的第10分鐘執行一遍/etc/cron.hourly目錄下的腳本,相應的,由於使用的是cron.hourly目錄,即每小時執行一次任務,所以對應的“小時”位不用設置,其餘選項類推。run-parts選項後接目錄的絕對路徑,沒有run-parts則後面跟的是腳本文件或者系統命令。

crond由於是系統服務項,所以相應的可以有如下的針對服務的操作命令:

service crond start|stop|restart|reload|status 分別對應crond服務的啓動,停止,重啓,重新加載配置文件和狀態

而crond自身有如下命令選項

crontab -l                     #列出當前用戶的crontab文件內容,即計劃任務,若不使用-u [user]指定用戶則默認顯示當前用戶,下同

crontab -e                    #編輯用戶的crontab文件

crontab -r                     #刪除用戶位於/var/spool/cron/下的crontab文件,每個用戶均有一個文件夾與其對應

crontab -i                     #在刪除crontab文件時出現確認提示

 crontab -u [user]         #指定某個用戶進行操作,當指定用戶進行操作後,相應地在/var/spool/cron/目錄下會出現對應用戶名的crontab文件

 

 另,位於/etc/cron.deny文件裏的用戶表示不允許使用crontab命令,同理有/etc/cron.allow表示允許使用,若/etc/目錄下同時出現這兩個文件則策略以allow爲主

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章