掌握crontab命令,linux計(jì)劃任務(wù)立馬搞定!
在Linux上計(jì)劃任務(wù)服務(wù)的詳細(xì)說(shuō)明中,我介紹了在Linux上使用at命令來(lái)添加單個(gè)計(jì)劃任務(wù)的方法。 盡管at命令本質(zhì)上可以運(yùn)行我們的大多數(shù)日常工作場(chǎng)景,但它很復(fù)雜,情況更加有限。 crontab命令可以很好地解決此問(wèn)題。 這就是我們向大家介紹crontab命令的主要原因。
在我們正式學(xué)習(xí)crontab命令之前,我們先來(lái)學(xué)習(xí)一下crond服務(wù)的參數(shù)的口訣“分、時(shí)、日、月、星期 命令”,這正是crond服務(wù)設(shè)置任務(wù)的參數(shù)格式,我們需要注意的是,如果有些字段沒(méi)有設(shè)置,則需要使用星號(hào)(*)占位。
在學(xué)習(xí)了crond服務(wù)參數(shù)用法之后,我們來(lái)用crontab命令來(lái)創(chuàng)建幾個(gè)計(jì)劃任務(wù)。創(chuàng)建計(jì)劃任務(wù)統(tǒng)一使用命令:crontab -e。
案例一:假設(shè)在每周二、四、六的早上8點(diǎn)1分,我們都需要通過(guò)tar打包的方式備份指定的目錄文件,使其作為一個(gè)備份文件。我們?cè)撊绾蝿?chuàng)建計(jì)劃任務(wù)呢?我們可以使用crontab -e命令來(lái)創(chuàng)建計(jì)劃任務(wù)。具體的實(shí)現(xiàn)效果的參數(shù)如crontab -l命令結(jié)果所示:
[root@redhat ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@linuxprobe ~]# crontab -l
1 8 * * 2,4,6 /usr/bin/tar -czvf etc_bak.tar.gz /etc
這里要重點(diǎn)為大家強(qiáng)調(diào)三個(gè)知識(shí)點(diǎn):
1、時(shí)間段的表示
除了用逗號(hào)(,)來(lái)分別表示多個(gè)時(shí)間段,例如“8,9,12”表示8月、9月和12月。還可以用減號(hào)(-)來(lái)表示一段連續(xù)的時(shí)間周期(例如字段“日”的取值為“12-15”,則表示每月的12~15日)。以及用除號(hào)(/)表示執(zhí)行任務(wù)的間隔時(shí)間(例如“*/5”表示每隔5分鐘執(zhí)行一次任務(wù))。
2、命令必須用絕對(duì)路徑
在crond服務(wù)的計(jì)劃任務(wù)參數(shù)中,所有命令一定要用絕對(duì)路徑的方式來(lái)寫(xiě),如果不知道絕對(duì)路徑,請(qǐng)用whereis命令進(jìn)行查詢(xún)。
3、特殊情況
計(jì)劃任務(wù)中的“分”字段必須有數(shù)值,絕對(duì)不能為空或是*號(hào),而“日”和“星期”字段不能同時(shí)使用,否則就會(huì)發(fā)生沖突。
通過(guò)crontab計(jì)劃任務(wù),可以更好的解決運(yùn)維難題,極大地減少特定時(shí)間的、循環(huán)性的維護(hù)工作,減輕運(yùn)維人員的運(yùn)維壓力。