什么是 cron?利用 cron 定時執(zhí)行任務(wù)

更多精彩文章:https://deepzz.com

cron 是什么流炕?這是一個 unix 系統(tǒng)內(nèi)置的定時執(zhí)行任務(wù)的工具,最小精確到一分鐘仅胞。它的實現(xiàn)有很多版本每辟,不同版本間有些許的功能差異。與它相關(guān)的有兩個工具:crond 和 crontab干旧。crond 就是 cron 在系統(tǒng)內(nèi)的宿主程序影兽,crontab 是管理 cron 任務(wù)的管理工具。

下面介紹 cron 相關(guān)的使用莱革。

概覽

在給 cron 添加任務(wù)記錄之前需要先了解它的規(guī)矩:

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday;
│ │ │ │ │                                       7 is also Sunday on some systems)
│ │ │ │ │
│ │ │ │ │
* * * * *  command to execute

每條記錄一般是:5 個時間點 + 執(zhí)行的命令峻堰。其中 * 是特殊的,它表示任何情況均匹配盅视。

我們來理解幾條記錄:

# 在每個小時的第一分鐘執(zhí)行 `echo "hello" >> a.txt`捐名。
1 * * * * echo "hello" >> a.txt

# 每 2 分鐘執(zhí)行一次 `echo "hello world" >> a.txt`。
*/2 * * * * echo "hello world" >> a.txt

# 在每個星期 6 的 23 點 45 分執(zhí)行這個腳本闹击。
45  23 * * 6 /home/oracle/scripts/export_dump.sh

如何添加任務(wù)記錄镶蹋?你可以通過 crontab -e 修改添加。crontab -h 查看幫助。

權(quán)限

有兩個文件:

  • /etc/cron.allow贺归,如果此文件存在淆两,它必須包含你使用 cron 作業(yè)的用戶名。
  • /etc/cron.deny拂酣,如果 cron.allow 文件不存在秋冰,但是 /etc/cron.deny 文件確實存在,那么要使用 cron 作業(yè)婶熬,不能列在 /etc/cron.deny 文件中剑勾。

表達式

上面已經(jīng)見過 cron 的任務(wù)記錄的形式,即表達式赵颅。下面我們具體的去理解表達式虽另。

字段 必須 值范圍 允許特殊字符 備注
分鐘 Minutes 0 - 59 * , - -
小時 Hours 0 - 23 * , - -
幾號 Day of month 1 - 31 * , - ? L W -
月份 Month 1 - 12 或 JAN - DEC * , - -
星期幾 Day of week 0 - 6 或 SUN -SAT * , - ? L # -

逗號(,)

用于分隔并列時間,如饺谬,在第五個字段(星期幾)中使用 MON,WED,FRI 表示星期一捂刺,星期三和星期五。

連接符(-)

指定范圍,如,MON-WED 表示星期一到星期五吼过。

百分號(%)

執(zhí)行命令中的百分號,除非用反斜杠(\)進行轉(zhuǎn)義苛谷,否則將更改為換行符辅鲸,并將第一個 % 之后的所有數(shù)據(jù)作為標準輸入發(fā)送到命令格郁。

下面這些是非標準字符,可能在僅存在于某些 cron 中独悴。

L

L 代表 “最后”例书,當在星期幾字段中使用時,它可以指定特定月份的 “最后一個星期五”(5L)刻炒,在 “月份” 字段中决采,它指定了該月的最后一天。

W

W 可用于月份坟奥,用于指定最近給定日期的工作日(星期一到星期五)树瞭。如,如果要將 “15W” 指定為月日期字段的值爱谁,則意思是:“離 15 號最近的工作日”晒喷。所以,如果 15 日是星期六访敌,觸發(fā)器將在 14 日星期五觸發(fā)凉敲。如果 15 日是星期天,觸發(fā)器將在 16 日星期一觸發(fā)。如果 15 日是星期二爷抓,那么它將在 15 日當天觸發(fā)势决。但是,如果您指定 “1W” 作為月日的值蓝撇,而該天是星期六果复,則觸發(fā)器將在 3 天后的星期一觸發(fā),因為它不會在一個月的邊界上跳轉(zhuǎn)唉地。只有當日期是單日据悔,而不是范圍或天數(shù)時,才能指定 “W” 字符耘沼。

哈希(#)

# 可用于星期幾字段极颓,并且后面必須跟 1-5 之間的數(shù)字。它允許你指定一個給定月份的 “第二個星期五”群嗤。如菠隆,“4#3” 代表哪個月的第 3 個星期四。

/

與范圍組合指定步進值狂秘。如分鐘字段 */5 表示每 5 分鐘骇径。

H(H)

H 用于 Jenkins 軟件。20 * * * * 代表每個小時的第 20 分鐘者春,H * * * * 指示任務(wù)每小時執(zhí)行一次未指定的但不變的時間破衔。這允許隨著時間的推移擴展任務(wù)。

crontab

crontab 是管理任務(wù)記錄的工具钱烟。我們可以容易的到 /etc 下看到 cron.d晰筛、cron.dailycron.weekly拴袭、cron.monthly读第、cron.hourlycrontab拥刻、cron.deny 等文件怜瞒。

看一下 crontab 文件的內(nèi)容:

$ cat crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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

大概會有上面的內(nèi)容。這個相當于內(nèi)容是空的般哼,我們需要添加:

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

這樣吴汪,一般的如 每小時、每天蒸眠、每個星期漾橙、每個月執(zhí)行的任務(wù)都覆蓋到了。上面的語句的意思是:到點觸發(fā)執(zhí)行相關(guān)目錄內(nèi)的腳本黔宛。

參考文檔

[1] https://en.wikipedia.org/wiki/Cron

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末近刘,一起剝皮案震驚了整個濱河市擒贸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌觉渴,老刑警劉巖介劫,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異案淋,居然都是意外死亡座韵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門踢京,熙熙樓的掌柜王于貴愁眉苦臉地迎上來誉碴,“玉大人,你說我怎么就攤上這事瓣距∏粒” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵蹈丸,是天一觀的道長成黄。 經(jīng)常有香客問我,道長逻杖,這世上最難降的妖魔是什么奋岁? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮荸百,結(jié)果婚禮上闻伶,老公的妹妹穿的比我還像新娘。我一直安慰自己够话,他們只是感情好蓝翰,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著更鲁,像睡著了一般霎箍。 火紅的嫁衣襯著肌膚如雪奇钞。 梳的紋絲不亂的頭發(fā)上澡为,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音景埃,去河邊找鬼媒至。 笑死,一個胖子當著我的面吹牛谷徙,可吹牛的內(nèi)容都是我干的拒啰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼完慧,長吁一口氣:“原來是場噩夢啊……” “哼谋旦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤册着,失蹤者是張志新(化名)和其女友劉穎拴孤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甲捏,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡演熟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了司顿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芒粹。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖大溜,靈堂內(nèi)的尸體忽然破棺而出化漆,到底是詐尸還是另有隱情,我是刑警寧澤钦奋,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布获三,位于F島的核電站,受9級特大地震影響锨苏,放射性物質(zhì)發(fā)生泄漏疙教。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一伞租、第九天 我趴在偏房一處隱蔽的房頂上張望贞谓。 院中可真熱鬧,春花似錦葵诈、人聲如沸裸弦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽理疙。三九已至,卻和暖如春泞坦,著一層夾襖步出監(jiān)牢的瞬間窖贤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工贰锁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赃梧,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓豌熄,卻偏偏與公主長得像授嘀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锣险,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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

  • Linux定時任務(wù)Crontab命令詳解 linux 系統(tǒng)則是由 cron (crond) 這個系統(tǒng)服務(wù)來控制的蹄皱。...
    孫燕超閱讀 1,820評論 0 4
  • Liunx定時任務(wù) crontab(持續(xù)運行) cron守護進程 cron服務(wù) systemctl start ...
    liudongdong閱讀 683評論 0 5
  • 前一天學習了 at 命令是針對僅運行一次的任務(wù)览闰,循環(huán)運行的例行性計劃任務(wù),linux系統(tǒng)則是由 cron (cro...
    Zcclucky閱讀 576評論 0 0
  • Linux定時任務(wù)Crontab命令詳解linux 系統(tǒng)則是由 cron (crond) 這個系統(tǒng)服務(wù)來控制的巷折。L...
    時待吾閱讀 392評論 0 0
  • 話說四川一座大學焕济,位與城市郊外,平時就流傳著不少令人奇怪的不可思議的故事盔几。有一個女生寢室晴弃,住著7個女生,平日里相安...
    故鄉(xiāng)大閱讀 206評論 1 0