例行性任務(wù)(crontab)

系統(tǒng)經(jīng)常會(huì)主動(dòng)執(zhí)行一些任務(wù)线梗,這些任務(wù)可能又分為“單一”工作與“循環(huán)”工作椰于。

1、什么是例行性工作

有的工作是例行性的仪搔,有的工作是臨時(shí)發(fā)生的瘾婿。

如果計(jì)算機(jī)系統(tǒng)能夠主動(dòng)通知我某些事情的話,那不就輕松很多僻造!

1.1憋他、Linux工作調(diào)度的種類:at,cron

兩種工作調(diào)度的方式:

一種是例行性的髓削,就是每隔一定的周期要來辦的事項(xiàng)竹挡;

一種是突發(fā)性的,就是這次做完以后就沒有的那一種立膛。

at:at是個(gè)可以處理僅執(zhí)行一次就結(jié)束調(diào)度的命令揪罕,不過要執(zhí)行at時(shí)梯码,必須要有atd這個(gè)服務(wù)的支持才行;

crontab:crontab這個(gè)命令所設(shè)置的工作將會(huì)循環(huán)一直執(zhí)行下去好啰⌒ⅲ可循環(huán)的時(shí)間為分鐘、小時(shí)框往、每周鳄抒、每月或每年等。crontab處理可以使用命令執(zhí)行外椰弊,也可編輯/etc/crontab來支持许溅。至于讓crontab可以生效的服務(wù)則是crond這個(gè)服務(wù)。

1.2秉版、Linux上常見的例行性工作

基本上Linux系統(tǒng)常見的例行性任務(wù)有:

進(jìn)行日志文件的輪替(log rotate)贤重;

日志文件分析logwatch的任務(wù);

新建locate的數(shù)據(jù)庫清焕;

whatis數(shù)據(jù)庫的建立并蝗;

RPM軟件日志文件的新建;

刪除臨時(shí)文件秸妥;

與網(wǎng)絡(luò)服務(wù)有關(guān)的分析行為滚停;



2、僅執(zhí)行一次的工作調(diào)度

單一工作調(diào)度的運(yùn)作粥惧,at這個(gè)命令铐刘。

2.1、atd的啟動(dòng)與at運(yùn)行方式

atd這個(gè)服務(wù)調(diào)度at

service atd start

at的運(yùn)行方式:

事實(shí)上影晓,我們使用at這個(gè)命令來生成所要運(yùn)行的工作镰吵,并將這個(gè)工作以文本的方式寫入/var/spool/at目錄內(nèi),該工作便能等待atd這個(gè)服務(wù)的取用并執(zhí)行了挂签。

不過疤祭,并不是所有的人都可以進(jìn)行at工作調(diào)度。所以饵婆,除非是你認(rèn)可的賬戶勺馆,否則先不要讓他們使用at。

我們可以利用/etc/at.allow和/etc/at.deny這兩個(gè)文件來進(jìn)行at的使用限制侨核。

2.2草穆、實(shí)際運(yùn)行單一工作調(diào)度

at命令語法

at這個(gè)命令最重要的地方在于時(shí)間的指定, now + x minutes也是不錯(cuò)的方法搓译。

事實(shí)上悲柱,當(dāng)我們使用at時(shí)會(huì)進(jìn)入一個(gè)at shell的環(huán)境來讓用戶執(zhí)行工作命令,此時(shí)些己,建議你最好使用絕對(duì)路徑來執(zhí)行你的命令豌鸡。

at 的執(zhí)行與終端機(jī)環(huán)境無關(guān)嘿般,而所有的standard output/standard error output都會(huì)傳送到執(zhí)行者的mailbox里面去,不是輸出在屏幕上涯冠。

還要注意的是炉奴,at執(zhí)行過后并沒有任何輸出信息,如果你想要知道命令執(zhí)行沒有蛇更,可以發(fā)送一封郵件告知你瞻赶。

at還有一個(gè)很棒的優(yōu)點(diǎn),那就是“后臺(tái)執(zhí)行”的功能派任!

脫機(jī)繼續(xù)工作的任務(wù)共耍,由于在 at 工作調(diào)度的使用上,系統(tǒng)會(huì)將該項(xiàng)at工作獨(dú)立出你的bash環(huán)境中吨瞎,直接交給系統(tǒng)的atd程序來接管,因此穆咐,當(dāng)你執(zhí)行了at的工作之后就可以立刻脫機(jī)了颤诀,剩下的工作就完全交給Linux管理即可。

at的工作管理:

利用atp來查詢对湃,利用atrm來刪除崖叫。

atp和atrm命令

如果你是在一個(gè)非常忙碌的系統(tǒng)下運(yùn)行at,能不能指定你的工作在系統(tǒng)較閑的時(shí)候才進(jìn)行呢拍柒?可以的心傀,那就是用batch命令吧!

batch:系統(tǒng)有空時(shí)才進(jìn)行的后臺(tái)任務(wù)

其實(shí)batch是利用at來進(jìn)行命令的執(zhí)行拆讯,只是加入了一些控制參數(shù)而已脂男。

這個(gè)batch神奇的地方在于:它會(huì)在CPU工作負(fù)載小于0.8的時(shí)候,才進(jìn)行你執(zhí)行的工作任務(wù)种呐。

負(fù)載的意思是:CPU在單一時(shí)間點(diǎn)所負(fù)責(zé)的工作數(shù)量宰翅,不是CPU的使用率。舉例來說爽室,如果我有一個(gè)程序它需要一直使用CPU的運(yùn)算功能汁讼,那么此時(shí)CPU的使用率可能到達(dá)100%,但是CPU的工作負(fù)載則是趨近于1阔墩,因?yàn)镃PU僅僅負(fù)責(zé)了一個(gè)工作嘿架。如果同時(shí)執(zhí)行這樣的程序兩個(gè),CPU的使用率還是100%啸箫,但CPU的負(fù)載則變成了2耸彪。當(dāng)CPU的工作負(fù)載越大,代表CPU必須要在不同的工作之間進(jìn)行頻繁的工作切換忘苛。

batch命令的用法

其實(shí)batch也是利用atp和atrm來管理的搜囱。



3丑瞧、循環(huán)執(zhí)行的例行性工作調(diào)度

循環(huán)執(zhí)行的例行性工作調(diào)度則是由cron(crond)這個(gè)系統(tǒng)服務(wù)來控制的。另外蜀肘,用戶也可以進(jìn)行例行性工作調(diào)度绊汹,Linux提供給用戶控制例行性工作調(diào)度的命令是(crontab)。

與at一樣扮宠,我們也可以限制使用crontab的用戶賬戶西乖。在這兩個(gè)文件當(dāng)中,/etc/cron.allow和/etc/cron.deny坛增。

當(dāng)用戶使用crontab這個(gè)命令來新建工作調(diào)度之后获雕,該項(xiàng)工作就會(huì)被記錄到/var/spool/cron里面去了,而且是以賬號(hào)來作為判別的收捣。

crontab命令
代表意義
特殊字符

注意届案,crontab -r 命令是刪除所有的crontab內(nèi)容。

3.2罢艾、系統(tǒng)的配置文件:/etc/crontab

這個(gè)crontab -e 主要是針對(duì)cron來設(shè)計(jì)的楣颠,如果是系統(tǒng)的例行性任務(wù)時(shí),就需要編輯/etc/crontab這個(gè)文件咐蚯。

基本上童漩,cron這個(gè)服務(wù)的最低檢查限制的是“分鐘”,所以cron會(huì)每分鐘去讀取一次/etc/crontab與/var/spool/cron里面的數(shù)據(jù)內(nèi)容春锋。因此矫膨,只要你編輯完/etc/crontab這個(gè)文件,并且將它保存之后期奔,那么cron的設(shè)置就自動(dòng)會(huì)來執(zhí)行侧馅。由于crontab是讀取到內(nèi)存中的,所以在你修改完/etc/crontab之后呐萌,可能并不會(huì)馬上執(zhí)行施禾,這個(gè)時(shí)候請(qǐng)重啟crond這個(gè)服務(wù)吧。

/etc/crontab

/etc/crontab這個(gè)文件里面支持兩種執(zhí)行命令的方式搁胆,一種是直接執(zhí)行命令弥搞,一種則是以目錄來規(guī)劃。

3.3渠旁、一些注意事項(xiàng)

資源分配不均問題攀例;

取消不要的輸出選項(xiàng);

安全的檢驗(yàn)顾腊;

周與日粤铭、月不可同時(shí)并存。


4杂靶、可喚醒停機(jī)期間的工作任務(wù)

如果你的Linux主機(jī)24小時(shí)全天梆惯、全年無休的服務(wù)器之用酱鸭,那么你只要有atd與crond這兩個(gè)服務(wù)來管理你的例行性工作調(diào)度即可。如果你的主機(jī)并非24小時(shí)開機(jī)垛吗,那么你的某些例行性任務(wù)可能就無法運(yùn)行凹髓,此時(shí)就得要用到anacron這個(gè)工具了。

4.1怯屉、什么是anacron

anacron并不是用來替代crontab的蔚舀,anacron存在的目的就在于我們上頭提到的,處理非24小時(shí)一直啟動(dòng)的Linux系統(tǒng)的crontab的執(zhí)行锨络。所以annacron并不能指定何時(shí)執(zhí)行某項(xiàng)任務(wù)赌躺,而是以天為單位或者是在開機(jī)后立刻進(jìn)行anacron的操作,它會(huì)去檢測(cè)停機(jī)期間應(yīng)該進(jìn)行但是并沒有進(jìn)行的crontab任務(wù)羡儿,并將該任務(wù)執(zhí)行一遍礼患,然后anacron就會(huì)自動(dòng)停止。

anacron讀取的時(shí)間記錄文件(timestamp)了掠归!anacron會(huì)去分析現(xiàn)在的時(shí)間與時(shí)間記錄文件所記載的上次執(zhí)行anacron的時(shí)間缅叠,兩者比較后若發(fā)現(xiàn)有區(qū)別,那就是在某些時(shí)刻沒有進(jìn)行crontab拂到。此時(shí)anacron就會(huì)開始執(zhí)行未進(jìn)行的crontab任務(wù)了。

所以anacron其實(shí)也是通過crontab來運(yùn)行的码泞,因此anacron運(yùn)行的時(shí)間通常有兩個(gè)兄旬,一個(gè)是系統(tǒng)開機(jī)期間運(yùn)行,一個(gè)是寫入crontab的調(diào)度中余寥,這樣才能在特定時(shí)間分析系統(tǒng)未進(jìn)行的crontab工作领铐。

anacron其實(shí)是一個(gè)程序并非一個(gè)服務(wù)。

anacron命令
/etc/crontab

如果 anacron 執(zhí)行 cron.daily時(shí)宋舷,它是這樣運(yùn)行的:

1绪撵,由/etc/anacrontab分析到cron.daily這項(xiàng)工作名稱的天數(shù)為1天;

2祝蝠,由/var/spool/anacron/cron.daily取出最近一次執(zhí)行anacron的時(shí)間戳音诈;

3,由上個(gè)步驟與目前的時(shí)間比較绎狭,若差異天數(shù)未1天以上(含1天)细溅,就準(zhǔn)備進(jìn)行命令;

4儡嘶,若準(zhǔn)備進(jìn)行命令喇聊,根據(jù)/etc/anacrontab的設(shè)置將延遲5分鐘;

5蹦狂,延遲時(shí)間過后誓篱,開始執(zhí)行后續(xù)命令朋贬,即“run-parts /etc/cron.daily”這串命令;

6窜骄,執(zhí)行完畢后锦募,anacron程序結(jié)束。

所以說啊研,時(shí)間戳是非常重要的御滩。anacron是通過該記錄與目前的時(shí)間差異,了解到是否應(yīng)該要進(jìn)行某項(xiàng)任務(wù)的工作党远。

現(xiàn)在知道為甚么隔了一陣才將Linux開機(jī)削解,但是開機(jī)后一段時(shí)間內(nèi)系統(tǒng)很忙碌,那就是因?yàn)閍nacron正在執(zhí)行過去crontab未進(jìn)行的各項(xiàng)工作制度沟娱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氛驮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子济似,更是在濱河造成了極大的恐慌矫废,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砰蠢,死亡現(xiàn)場離奇詭異蓖扑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)台舱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門律杠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竞惋,你說我怎么就攤上這事柜去。” “怎么了拆宛?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵嗓奢,是天一觀的道長。 經(jīng)常有香客問我浑厚,道長股耽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任钳幅,我火速辦了婚禮豺谈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好由桌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布茅逮。 她就那樣靜靜地躺著缰揪,像睡著了一般扭倾。 火紅的嫁衣襯著肌膚如雪匹耕。 梳的紋絲不亂的頭發(fā)上烛缔,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天责掏,我揣著相機(jī)與錄音柜砾,去河邊找鬼。 笑死换衬,一個(gè)胖子當(dāng)著我的面吹牛痰驱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瞳浦,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼担映,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了叫潦?” 一聲冷哼從身側(cè)響起蝇完,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矗蕊,沒想到半個(gè)月后短蜕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡傻咖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年朋魔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卿操。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡警检,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硬纤,到底是詐尸還是另有隱情解滓,我是刑警寧澤赃磨,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布筝家,位于F島的核電站,受9級(jí)特大地震影響邻辉,放射性物質(zhì)發(fā)生泄漏溪王。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一值骇、第九天 我趴在偏房一處隱蔽的房頂上張望莹菱。 院中可真熱鬧,春花似錦吱瘩、人聲如沸道伟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜜徽。三九已至祝懂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拘鞋,已是汗流浹背砚蓬。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盆色,地道東北人灰蛙。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像隔躲,于是被迫代替她去往敵國和親摩梧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Linux定時(shí)任務(wù)Crontab命令詳解 linux 系統(tǒng)則是由 cron (crond) 這個(gè)系統(tǒng)服務(wù)來控制的蹭越。...
    孫燕超閱讀 1,815評(píng)論 0 4
  • 前一天學(xué)習(xí)了 at 命令是針對(duì)僅運(yùn)行一次的任務(wù)障本,循環(huán)運(yùn)行的例行性計(jì)劃任務(wù),linux系統(tǒng)則是由 cron (cro...
    Zcclucky閱讀 574評(píng)論 0 0
  • Linux 系統(tǒng)提供了使用者控制計(jì)劃任務(wù)的命令 :crontab 命令响鹃。 一驾霜、crond簡介 crond是linu...
    happeace閱讀 1,768評(píng)論 0 53
  • 為當(dāng)前用戶創(chuàng)建cron服務(wù) 1. 鍵入 crontab -e 編輯crontab服務(wù)文件 例如 文件內(nèi)容如下: *...
    jeckHao閱讀 1,879評(píng)論 0 0
  • 馬路無所事事的躺著 從沒有跟路燈說過十月什么話 它生出些句號(hào) 青苔不綠 夕陽不來 夏至未離 金秋未黃 筆尖發(fā)病 心...
    禁止吃糖閱讀 301評(píng)論 4 3