Cron介紹

一、介紹

Cron是Linux系統(tǒng)中最有用的工具之一,cron作業(yè)是在指定時(shí)間到來(lái)時(shí)被調(diào)度執(zhí)行的作業(yè)。Cron本身是一個(gè)守護(hù)進(jìn)程枢劝,在后臺(tái)運(yùn)行,通過(guò)配置文件“crontab”來(lái)根據(jù)時(shí)間調(diào)度指定的作業(yè)執(zhí)行卜壕。

1.1 cron您旁,crontab以及anacron的關(guān)系

  • cron是大多數(shù)linux發(fā)行版都自帶的守護(hù)進(jìn)程(daemon)
  • crontab(cron table的簡(jiǎn)稱)既可以指cron用來(lái)定期執(zhí)行特定任務(wù)所需要的列表文件,又可以指用來(lái)創(chuàng)建轴捎、刪除鹤盒、查看當(dāng)前用戶(或者指定用戶)的crontab文件的命令。
  • anacron不是守護(hù)進(jìn)程侦副,可以看做是cron守護(hù)進(jìn)程的某種補(bǔ)充程序侦锯,anacron是獨(dú)立的linux程序,被cron守護(hù)進(jìn)程或者其他開(kāi)機(jī)腳本啟動(dòng)運(yùn)行,可以每天、每周豹储、每個(gè)月周期性地執(zhí)行一項(xiàng)任務(wù)(最小單位為天)。適合于可能經(jīng)常會(huì)關(guān)機(jī)的機(jī)器葱蝗,當(dāng)機(jī)器重新開(kāi)機(jī)anacron程序啟動(dòng)之后,anacron會(huì)檢查anacron任務(wù)是否在合適的周期執(zhí)行了细燎,如果未執(zhí)行則在anacron設(shè)定好的延遲時(shí)間之后只執(zhí)行一次任務(wù)两曼,而不管任務(wù)錯(cuò)過(guò)了幾次周期。

1.2 crontab配置文件

  • 系統(tǒng)默認(rèn)crontab文件為/etc/crontab,以及/etc/cron.d/目錄下的文件玻驻,有些程序會(huì)把自己的crontab文件放在/etc/cron.d/目錄下悼凑。cron守護(hù)進(jìn)程會(huì)檢查/etc/crontab以及/etc/cron.d/目錄下的文件,根據(jù)這些文件中的cron任務(wù)所設(shè)置的執(zhí)行時(shí)間決定是否執(zhí)行任務(wù)璧瞬,如果當(dāng)前時(shí)間與cron任務(wù)所設(shè)置的執(zhí)行時(shí)間相同户辫,則執(zhí)行任務(wù)。
  • 每個(gè)用戶自己的crontab文件都會(huì)被放在 /var/spool/cron目錄下嗤锉,默認(rèn)為空渔欢,可以使用crontab命令創(chuàng)建。cron守護(hù)進(jìn)程會(huì)檢查/var/spool/cron目錄下的文件瘟忱,根據(jù)這些文件中的cron任務(wù)所設(shè)置的執(zhí)行時(shí)間決定是否執(zhí)行任務(wù)奥额,如果當(dāng)前時(shí)間與cron任務(wù)所設(shè)置的執(zhí)行時(shí)間相同,則執(zhí)行任務(wù)访诱。

1.3 注意事項(xiàng)
cron執(zhí)行的任務(wù)會(huì)在設(shè)定好的時(shí)刻執(zhí)行垫挨,當(dāng)機(jī)器處于關(guān)機(jī)狀態(tài)下并錯(cuò)過(guò)了任務(wù)執(zhí)行的時(shí)間,cron任務(wù)就無(wú)法預(yù)期執(zhí)行了触菜。

二九榔、Cron配置類型

2.1 系統(tǒng)級(jí)Crontab
這些cron作業(yè)被系統(tǒng)服務(wù)和關(guān)鍵作業(yè)所使用,且需要root級(jí)的權(quán)限才能執(zhí)行≌懿矗可以在/etc/crontab文件中查看系統(tǒng)級(jí)的cron作業(yè)剩蟀。

2.2 用戶級(jí)Crontab
用戶級(jí)的cron作業(yè)是針對(duì)每個(gè)用戶單獨(dú)分開(kāi)的。因此每個(gè)用戶都可以使用crontab命令創(chuàng)建自己的cron作業(yè)攻旦,還可以使用以下命令編輯或查看自己的cron作業(yè)喻旷。

三、 操作**

  • 查看狀態(tài)
service cron status
  • 開(kāi)啟服務(wù)
service cron start
  • help

  • 創(chuàng)建并編輯當(dāng)前用戶的crontab

crontab -e
  • 3.4 列出當(dāng)前用戶的crontab
crontab -l
  • crontab文件語(yǔ)法及示例
SHELL=/bin/bash
MAILTO=root@example.com
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

# 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

該文件的前三行代碼設(shè)置了默認(rèn)環(huán)境牢屋。cron守護(hù)進(jìn)程并不提供任何環(huán)境。SHELL變量設(shè)置當(dāng)cron任務(wù)(命令以及腳本)運(yùn)行時(shí)的shell,MAILTO變量設(shè)置cron任務(wù)執(zhí)行結(jié)果發(fā)送的郵箱槽袄,PATH設(shè)置去哪些目錄下尋找cron任務(wù)的命令烙无。注釋部分則解釋一條cron任務(wù)的構(gòu)成,一條cron任務(wù)就是一行遍尺,要設(shè)置多少條cron任務(wù)則寫多少行截酷。一條cron任務(wù)由七個(gè)部分組成。

  • 如果你想匹配取值范圍內(nèi)的所有值乾戏,使用“*”
  • 想匹配某些特殊的值迂苛,使用“,”,比如2,4,7就匹配的是2鼓择,4以及7三幻。
  • 兩個(gè)值被“-”連接表示范圍,此時(shí)匹配的是范圍內(nèi)所有值呐能,包含“-”兩邊的值念搬,比如4-7匹配的就是從4到7。
  • 想要表達(dá)每隔一段時(shí)間執(zhí)行一次任務(wù)摆出,使用 “/”朗徊, 比如分鐘部分中的 “*/10”表示每10分鐘運(yùn)行一次,比如小時(shí)部分中的“10-22/2”則表示在早上10點(diǎn)到晚上10點(diǎn)這段時(shí)間內(nèi)偎漫,每隔兩個(gè)小時(shí)運(yùn)行一次爷恳。 注意 :當(dāng)“/”左邊的值可以除盡“/”右邊的值時(shí),任務(wù)才會(huì)運(yùn)行象踊。

3.8 cron.hourly温亲、daily、weekly通危、monthly

示例

4.1 在指定時(shí)間調(diào)度Cron job作業(yè)

#! /bin/sh
echo hello >> /home/ubuntu/workspace/hello.txt
  • crontab -e
*/1 * * * * /home/ubuntu/crontest.sh

4.2 刪除log
4.3 清除cache
腳本中加入
echo 1 > /proc/sys/vm/drop_caches
需要系統(tǒng)級(jí)別權(quán)限

4.4 備用

#铸豁! /bin/sh

# 注釋

cd ~/workspace.log
echo "" > trace.log
echo 1 > /proc/sys/vm/drop_caches

copy 到 /etc/cron.hourly/下
注:由于/ etc / crontab文件使用run-parts,因此filename非常嚴(yán)格,不能有點(diǎn)菊碟,腳本中不能有~

五节芥、不執(zhí)行原因**

  • cron服務(wù)未啟動(dòng)
    crontab不是Linux內(nèi)核的功能,而是依賴一個(gè)crond服務(wù),這個(gè)服務(wù)可以啟動(dòng)當(dāng)然也可以停止头镊。如果停止了就無(wú)法執(zhí)行任何定時(shí)任務(wù)了蚣驼,解決的方法是打開(kāi)它:
    crond 或 service crond start 。
    如果提示crond命令不存在相艇,可能被誤刪除了颖杏,CentOS下可以通過(guò)這個(gè)命令重新安裝:
yum -y install crontabs
  • 路徑問(wèn)題
    有的命令在shell中執(zhí)行正常,但是在crontab執(zhí)行卻總是失敗坛芽。有可能是因?yàn)閏rontab使用的sh未正確識(shí)別路徑留储,比如:以root身份登錄shell后執(zhí)行一個(gè)/root/test.sh,只要執(zhí)行./test.sh

  • 時(shí)差問(wèn)題
    因?yàn)榉?wù)器與客戶端時(shí)差問(wèn)題咙轩,所以crontab的時(shí)間以服務(wù)器時(shí)間為準(zhǔn)获讳。

  • 變量問(wèn)題
    有時(shí)候命令中含有變量,但crontab執(zhí)行時(shí)卻沒(méi)有活喊,也會(huì)造成執(zhí)行失敗丐膝。

  • 權(quán)限問(wèn)題
    解決方法:
    增加執(zhí)行權(quán)限,或者用bash abc.sh的方法執(zhí)行.也有可能crontab任務(wù)所屬的用戶對(duì)某個(gè)目錄沒(méi)有寫權(quán)限钾菊,也會(huì)失敗帅矗。

...

六、crontab日志講解

crontab的日志比較簡(jiǎn)單煞烫,當(dāng)crond執(zhí)行任務(wù)失敗時(shí)會(huì)給用戶發(fā)一封郵件浑此。

本文介紹crontab在任務(wù)執(zhí)行失敗時(shí),如果發(fā)送郵件也失敗红竭,應(yīng)該怎樣通過(guò)增加crontab日志的方式記錄錯(cuò)誤原因尤勋。

默認(rèn)情況下,crontab中執(zhí)行的日志寫在/var/log下,如:

[root@centos-7-jarvis cron]# ls /var/log/cron*
/var/log/cron           /var/log/cron-20200531  /var/log/cron-20200823
/var/log/cron-20200524  /var/log/cron-20200822

如果日志有問(wèn)題,可以參考以下做法:

為crontab增加日志

參考:https://blog.csdn.net/qq_38880380/article/details/99625503

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茵宪,隨后出現(xiàn)的幾起案子最冰,更是在濱河造成了極大的恐慌,老刑警劉巖稀火,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暖哨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凰狞,警方通過(guò)查閱死者的電腦和手機(jī)篇裁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赡若,“玉大人达布,你說(shuō)我怎么就攤上這事∮舛” “怎么了黍聂?”我有些...
    開(kāi)封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵躺苦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我产还,道長(zhǎng)匹厘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任脐区,我火速辦了婚禮愈诚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牛隅。我一直安慰自己炕柔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布倔叼。 她就那樣靜靜地躺著汗唱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丈攒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天授霸,我揣著相機(jī)與錄音巡验,去河邊找鬼。 笑死碘耳,一個(gè)胖子當(dāng)著我的面吹牛显设,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辛辨,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼捕捂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了斗搞?” 一聲冷哼從身側(cè)響起指攒,我...
    開(kāi)封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎僻焚,沒(méi)想到半個(gè)月后允悦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虑啤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年隙弛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狞山。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡全闷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萍启,到底是詐尸還是另有隱情总珠,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站姚淆,受9級(jí)特大地震影響孕蝉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腌逢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一降淮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搏讶,春花似錦佳鳖、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至妒蔚,卻和暖如春穿挨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肴盏。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工科盛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人菜皂。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓贞绵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親恍飘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子榨崩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355