crontab是一個(gè)用來設(shè)置、刪除或顯示供守護(hù)進(jìn)程cron執(zhí)行的定時(shí)任務(wù)的命令。每一個(gè)用戶都可以擁有屬于自己的定時(shí)任務(wù),定時(shí)任務(wù)文件默認(rèn)以用戶名命名,并放在/var/spool/cron目錄,該目錄普通用戶無訪問權(quán)限。
可以通過cron.allow 和 cron.deny文件管理用戶使用crontab的權(quán)限。如果cron.allow存在,用戶必須列在其中才會(huì)被允許使用cron;如果cron.deny存在,被列在其中的用戶禁止使用cron;如果兩者都不存在,只有超級(jí)用戶才能使用cron。在CentOS中,這兩個(gè)文件放在/etc中,默認(rèn)只存在cron.deny文件,且為空。這就表示在CentOS中,默認(rèn)所有的用戶均有cron的使用權(quán)限。
1. 命令格式
crontab [-u user] file crontab [-u user] [-l | -r | -e] [-i] [-s] crontab -n [ hostname ] crontab -c
2. 命令功能
為個(gè)人用戶維護(hù)定時(shí)任務(wù)文件
3. 命令選項(xiàng)
-u user
編輯某個(gè)用戶的cron,只用root可以使用此參數(shù)為別的用戶設(shè)置cron服務(wù)。也可用于給用戶指定crontab文件。
-l
列出當(dāng)前用戶的crontab。
-r
刪除當(dāng)前用戶的crontab。
-e
編輯當(dāng)前用戶的crontab,默認(rèn)使用vi,或者是由 VISUAL或EDITOR環(huán)境變量指定的編輯器。
-i
與-r一起使用,用來詢問用戶是否直接刪除crontab。
4. 實(shí)例
實(shí)例1:列出當(dāng)前用戶的定時(shí)任務(wù)
[22:30:17][dodmaster@mha3 ~]$ crontab -l
0 1 * * 1 $HOME/.DailyShell/hislogclear.sh
0 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/voice
20 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/data/
40 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/sms/
實(shí)例2:root用戶編輯用戶martin的定時(shí)任務(wù)
[22:30:17][root@mha3 ~]# crontab -u martin -e
實(shí)例3:為用戶martin指定定時(shí)任務(wù)文件
[22:30:17][root@mha3 ~]# crontab -u martin martincron
5. cron文件語法
首先,我們打開/etc/crontab文件,我們將會(huì)看到如下內(nèi)容:
[20:40:30][dodmaster@mha3 etc]$ cat /etc/crontab SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# For details see man 4 crontabs# Example of job definition:# .---------------- 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# | | | | |# * * * * * user-name command to be executed
該文件是存放系統(tǒng)執(zhí)行的定時(shí)計(jì)劃,其中前四行用于設(shè)置cron服務(wù)運(yùn)行的環(huán)境變量:SHELL、PATH、HOME分別指定了cron服務(wù)運(yùn)行時(shí)的SHELL環(huán)境變量、PATH環(huán)境變量和HOME環(huán)境變量,這里不再贅述。MAILTO則表示cron運(yùn)行的任務(wù)輸出以電子郵件的形式發(fā)送到指定用戶,如果該變量的值為空,則不會(huì)發(fā)送郵件。余下幾行的內(nèi)容說明了系統(tǒng)定時(shí)任務(wù)的具體書寫格式。
1)星號(hào)(*)表示取值范圍內(nèi)的所有值。例如,*在hour的位置,表示每小時(shí)執(zhí)行一次。
2)連字符(-)表示一個(gè)范圍。例如,8-12表示8、9、10、11、12。
3)逗號(hào)(,)表示分割指定的數(shù)值。例如:3,5-7,9表示3,5,6,7,9。
4)正斜杠(/)表示步進(jìn)值。例如,分鐘的位置為*/5,表示每五分鐘執(zhí)行一次。
除了root用戶以外的所有用戶定義的crontab計(jì)劃任務(wù)都存放在/var/spool/cron目錄,通過crontab -e命令編輯,格式與/etc/crontab相同,可以不用指定user-name。
cron服務(wù)會(huì)每分鐘檢查一次/etc/crontab、/etc/cron.d/和/var/spool/cron/中的所有文件,并依此執(zhí)行。
6. 實(shí)例
實(shí)例1:每周末的凌晨一點(diǎn)鐘執(zhí)行一次系統(tǒng)的raid-check
0 1 * * Sun root /usr/sbin/raid-check
實(shí)例2:每天的4:02am分root用戶執(zhí)行/etc/cron.daily目錄下的所有腳本,run-parts參數(shù)表示執(zhí)行后面目錄中的所有腳本。
02 4 * * * root run-parts /etc/cron.daily
實(shí)例3:每天的8-18每四小時(shí),dodmaster用戶執(zhí)行hislogclear.sh腳本,即8:44,12:44,16:44,20:44四個(gè)時(shí)間點(diǎn),會(huì)執(zhí)行該腳本。
[21:57:56][dodmaster@mha3 ~]$ crontab -l
44 8-20/4 * * * $HOME/.DailyShell/hislogclear.sh
實(shí)例4:每五分鐘執(zhí)行一次(兩種寫法)
*/5 * * * * echo "every five minute to do it" >> time.txt
5 * * * * echo "every five minute to do it" >> time.txt
實(shí)例5:每個(gè)工作日下午八點(diǎn)執(zhí)行
0 20 * * 1-5 echo "every workday 20:00 to do it" >> time.txt
實(shí)例6:每分鐘的30秒時(shí)執(zhí)行,因?yàn)閏ron服務(wù)是每分鐘被喚醒一次,所以要執(zhí)行精確到秒的任務(wù)需要借助sleep命令。
* * * * * sleep 30; echo "every minute 30 second to do it" >> time.txt
實(shí)例7:每20秒執(zhí)行一次,即表示在每分鐘的0秒、20秒、40秒各執(zhí)行一次(也可以是其他的步長(zhǎng)是20秒的值,例如:5s、25s、45s)
* * * * * echo "every 20 second to do it" >> time.txt
* * * * * sleep 20; echo "every 20 second to do it" >> time.txt
* * * * * sleep 40; echo "every 20 second to do it" >> time.txt
以上所述是小編給大家介紹的Linux命令下crontab命令,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VEVB武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選