quartz cron 表達(dá)式詳解

時(shí)間格式: ?s> m >h >d> m> w(?)> y(?) ? ? 分別對應(yīng): 秒>分>小時(shí)>日>月>周>年,

1.每天什么時(shí)候執(zhí)行:

0 59 23 * * ?: 如下為每天23:59:00開始執(zhí)行

0 1,2,3 11,12 * * ? : 每天11:01,11:02,11:03; 12:01,12:02,12:03分執(zhí)行任務(wù)

2.每隔多久執(zhí)行:

匯總說明:

Cron表達(dá)式的時(shí)間字段除允許設(shè)置數(shù)值外夏漱,還可使用一些特殊的字符沟沙,提供列表嗡官、范圍、通配符等功能公黑,細(xì)說如下:

●星號(hào)(*):可用在所有字段中翘瓮,表示對應(yīng)時(shí)間域的每一個(gè)時(shí)刻逗概,例如颅夺,*在分鐘字段時(shí),表示“每分鐘”对供;

●問號(hào)(?):該字符只在日期和星期字段中使用位他,它通常指定為“無意義的值”,相當(dāng)于點(diǎn)位符产场;

●減號(hào)(-):表達(dá)一個(gè)范圍鹅髓,如在小時(shí)字段中使用“10-12”,則表示從10到12點(diǎn)京景,即10,11,12窿冯;

●逗號(hào)(,):表達(dá)一個(gè)列表值,如在星期字段中使用“MON,WED,FRI”确徙,則表示星期一醒串,星期三和星期五;

●斜杠(/):x/y表達(dá)一個(gè)等步長序列鄙皇,x為起始值芜赌,y為增量步長值。如在分鐘字段中使用0/15伴逸,則表示為0,15,30和45秒较鼓,而5/15在分鐘字段中表示5,20,35,50,你也可以使用*/y违柏,它等同于0/y博烂;


Quartz cron 表達(dá)式的格式十分類似于 UNIX cron 格式,但還是有少許明顯的區(qū)別漱竖。區(qū)別之一就是 Quartz 的格式向下支持到秒級(jí)別的計(jì)劃禽篱,而 UNIX cron 計(jì)劃僅支持至分鐘級(jí)。許多我們的觸發(fā)計(jì)劃要基于秒級(jí)遞增的(例如馍惹,每45秒)躺率,因此這是一個(gè)非常好的差異。

在 UNIX cron 里万矾,要執(zhí)行的作業(yè)(或者說命令)是存放在 cron 表達(dá)式中的悼吱,在第六個(gè)域位置上。Quartz 用 cron 表達(dá)式存放執(zhí)行計(jì)劃良狈。引用了 cron 表達(dá)式的CronTrigger在計(jì)劃的時(shí)間里會(huì)與 job 關(guān)聯(lián)上后添。

另一個(gè)與 UNIX cron 表達(dá)式的不同點(diǎn)是在表達(dá)式中支持域的數(shù)目。UNIX 給出五個(gè)域(分薪丁、時(shí)遇西、日、月和周)严嗜,Quartz 提供七個(gè)域粱檀。表 5.1 列出了 Quartz cron 表達(dá)式支持的七個(gè)域。

表 5.1. Quartz Cron 表達(dá)式支持到七個(gè)域

名稱是否必須允許值特殊字符

秒是0-59, - * /

分是0-59, - * /

時(shí)是0-23, - * /

日是1-31, - * ? / L W C

月是1-12 或 JAN-DEC, - * /

周是1-7 或 SUN-SAT, - * ? / L C #

年否空 或 1970-2099, - * /

月份和星期的名稱是不區(qū)分大小寫的漫玄。FRI和fri是一樣的茄蚯。

域之間有空格分隔,這和 UNIX cron 一樣睦优。無可爭辯的渗常,我們能寫的最簡單的表達(dá)式看起來就是這個(gè)了:

* * * ? * *

這個(gè)表達(dá)會(huì)每秒鐘(每分種的、每小時(shí)的刨秆、每天的)激發(fā)一個(gè)部署的 job凳谦。

·理解特殊字符

同 UNIX cron 一樣,Quartz cron 表達(dá)式支持用特殊字符來創(chuàng)建更為復(fù)雜的執(zhí)行計(jì)劃衡未。然而尸执,Quartz 在特殊字符的支持上比標(biāo)準(zhǔn) UNIX cron 表達(dá)式更豐富了。

*星號(hào)

使用星號(hào)(*) 指示著你想在這個(gè)域上包含所有合法的值缓醋。例如如失,在月份域上使用星號(hào)意味著每個(gè)月都會(huì)觸發(fā)這個(gè) trigger。

表達(dá)式樣例:

0 * 17 * * ?

意義:每天從下午5點(diǎn)到下午5:59中的每分鐘激發(fā)一次 trigger送粱。它停在下午 5:59 是因?yàn)橹?17 在小時(shí)域上褪贵,在下午 6 點(diǎn)時(shí),小時(shí)變?yōu)?18 了,也就不再理會(huì)這個(gè) trigger脆丁,直到下一天的下午5點(diǎn)世舰。

在你希望 trigger 在該域的所有有效值上被激發(fā)時(shí)使用*字符。

?問號(hào)

?號(hào)只能用在日和周域上槽卫,但是不能在這兩個(gè)域上同時(shí)使用跟压。你可以認(rèn)為?字符是 "我并不關(guān)心在該域上是什么值。" 這不同于星號(hào)歼培,星號(hào)是指示著該域上的每一個(gè)值震蒋。? 是說不為該域指定值。

不能同時(shí)這兩個(gè)域上指定值的理由是難以解釋甚至是難以理解的躲庄〔槠剩基本上,假定同時(shí)指定值的話噪窘,意義就會(huì)變得含混不清了:考慮一下笋庄,如果一個(gè)表達(dá)式在日域上有值11,同時(shí)在周域上指定了WED效览。那么是要 trigger 僅在每個(gè)月的11號(hào)无切,且正好又是星期三那天被激發(fā)?還是在每個(gè)星期三的11號(hào)被激發(fā)呢丐枉?要去除這種不明確性的辦法就是不能同時(shí)在這兩個(gè)域上指定值哆键。

只要記住,假如你為這兩域的其中一個(gè)指定了值瘦锹,那就必須在另一個(gè)字值上放一個(gè)?籍嘹。

表達(dá)式樣例:

0 10,44 14 ? 3 WEB

意義:在三月中的每個(gè)星期三的下午 2:10 和 下午 2:44 被觸發(fā)。

,逗號(hào)

逗號(hào) (,) 是用來在給某個(gè)域上指定一個(gè)值列表的弯院。例如辱士,使用值 0,15,30,45 在秒域上意味著每15秒觸發(fā)一個(gè) trigger。

表達(dá)式樣例:

0 0,15,30,45 * * * ?

意義:每刻鐘觸發(fā)一次 trigger听绳。

/斜杠

斜杠 (/) 是用于時(shí)間表的遞增的颂碘。我們剛剛用了逗號(hào)來表示每15分鐘的遞增,但是我們也能寫成這樣0/15椅挣。

表達(dá)式樣例:

0/15 0/30 * * * ?

意義:在整點(diǎn)和半點(diǎn)時(shí)每15秒觸發(fā) trigger头岔。

- 中劃線

中劃線 (-) 用于指定一個(gè)范圍。例如鼠证,在小時(shí)域上的 3-8 意味著 "3,4,5,6,7 和 8 點(diǎn)峡竣。" 域的值不允許回卷,所以像 50-10 這樣的值是不允許的量九。

表達(dá)式樣例:

0 45 3-8 ? * *

意義:在上午的3點(diǎn)至上午的8點(diǎn)的45分時(shí)觸發(fā) trigger适掰。

L字母

L說明了某域上允許的最后一個(gè)值颂碧。它僅被日和周域支持。當(dāng)用在日域上类浪,表示的是在月域上指定的月份的最后一天载城。例如,當(dāng)月域上指定了JAN時(shí)戚宦,在日域上的L會(huì)促使 trigger 在1月31號(hào)被觸發(fā)个曙。假如月域上是SEP,那么 L 會(huì)預(yù)示著在9月30號(hào)觸發(fā)受楼。換句話說,就是不管指定了哪個(gè)月呼寸,都是在相應(yīng)月份的時(shí)最后一天觸發(fā) trigger艳汽。

表達(dá)式0 0 8 L * ?意義是在每個(gè)月最后一天的上午 8:00 觸發(fā) trigger。在月域上的 * 說明是 "每個(gè)月"对雪。

當(dāng)L字母用于周域上河狐,指示著周的最后一天,就是星期六 (或者數(shù)字7)瑟捣。所以如果你需要在每個(gè)月的最后一個(gè)星期六下午的 11:59 觸發(fā) trigger馋艺,你可以用這樣的表達(dá)式0 59 23 ? * L。

當(dāng)使用于周域上迈套,你可以用一個(gè)數(shù)字與L連起來表示月份的最后一個(gè)星期 X捐祠。例如,表達(dá)式0 0 12 ? * 2L說的是在每個(gè)月的最后一個(gè)星期一觸發(fā) trigger桑李。

不要讓范圍和列表值與 L 連用

雖然你能用星期數(shù)(1-7)與 L 連用踱蛀,但是不允許你用一個(gè)范圍值和列表值與 L 連用。這會(huì)產(chǎn)生不可預(yù)知的結(jié)果贵白。

W字母

W字符代表著平日 (Mon-Fri)率拒,并且僅能用于日域中。它用來指定離指定日的最近的一個(gè)平日禁荒。大部分的商業(yè)處理都是基于工作周的猬膨,所以 W 字符可能是非常重要的。例如呛伴,日域中的15W意味著 "離該月15號(hào)的最近一個(gè)平日勃痴。" 假如15號(hào)是星期六,那么 trigger 會(huì)在14號(hào)(星期五)觸發(fā)磷蜀,因?yàn)樾瞧谒谋刃瞧谝唬ㄟ@個(gè)例子中是17號(hào))離15號(hào)更近召耘。(譯者Unmi注:不會(huì)在17號(hào)觸發(fā)的,如果是15W褐隆,可能會(huì)是在14號(hào)(15號(hào)是星期六)或者15號(hào)(15號(hào)是星期天)觸發(fā)污它,也就是只能出現(xiàn)在鄰近的一天,如果15號(hào)當(dāng)天為平日直接就會(huì)當(dāng)日執(zhí)行)。W只能用在指定的日域?yàn)閱翁焐辣幔荒苁欠秶蛄斜碇怠?/p>

#井號(hào)

#字符僅能用于周域中德澈。它用于指定月份中的第幾周的哪一天。例如固惯,如果你指定周域的值為6#3梆造,它意思是某月的第三個(gè)周五 (6=星期五,#3意味著月份中的第三周)葬毫。另一個(gè)例子2#1意思是某月的第一個(gè)星期一 (2=星期一镇辉,#1意味著月份中的第一周)。注意贴捡,假如你指定#5忽肛,然而月份中沒有第 5 周,那么該月不會(huì)觸發(fā)烂斋。

此處的 Cron 表達(dá)式 cookbook 旨在為常用的執(zhí)行需求提供方案屹逛。盡管不可能列舉出所有的表達(dá)式,但下面的應(yīng)該為滿足你的業(yè)務(wù)需求提供了足夠的例子汛骂。


·分鐘的 Cron 表達(dá)式

表 5.1. 包括了分鐘頻度的任務(wù)計(jì)劃 Cron 表達(dá)式

用法表達(dá)式

每天的從 5:00 PM 至 5:59 PM 中的每分鐘觸發(fā)0 * 17 * * ?

每天的從 11:00 PM 至 11:55 PM 中的每五分鐘觸發(fā)0 0/5 23 * * ?

每天的從 3:00 至 3:55 PM 和 6:00 PM 至 6:55 PM 之中的每五分鐘觸發(fā)0 0/5 15,18 * * ?

每天的從 5:00 AM 至 5:05 AM 中的每分鐘觸發(fā)0 0-5 5 * * ?

·日上的 Cron 表達(dá)式

表 5.2. 基于日的頻度上任務(wù)計(jì)劃的 Cron 表達(dá)式

用法表達(dá)式

每天的 3:00 AM0 0 3 * * ?

每天的 3:00 AM (另一種寫法)0 0 3 ? * *

每天的 12:00 PM (中午)0 0 12 * * ?

在 2005 中每天的 10:15 AM0 15 10 * * ? 2005

·周和月的 Cron 表達(dá)式

表 5.3. 基于周和/或月的頻度上任務(wù)計(jì)劃的 Cron 表達(dá)式

用法表達(dá)式

在每個(gè)周一,二, 三和周四的 10:15 AM0 15 10 ? * MON-FRI

每月15號(hào)的 10:15 AM0 15 10 15 * ?

每月最后一天的 10:15 AM0 15 10 L * ?

每月最后一個(gè)周五的 10:15 AM0 15 10 ? * 6L

在 2002, 2003, 2004, 和 2005 年中的每月最后一個(gè)周五的 10:15 AM0 15 10 ? * 6L 2002-2005

每月第三個(gè)周五的 10:15 AM0 15 10 ? * 6#3

每月從第一天算起每五天的 12:00 PM (中午)0 0 12 1/5 * ?

每一個(gè) 11 月 11 號(hào)的 11:11 AM0 11 11 11 11 ?

三月份每個(gè)周三的 2:10 PM 和 2:44 PM0 10,44 14 ? 3 WED

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罕模,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子帘瞭,更是在濱河造成了極大的恐慌淑掌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件图张,死亡現(xiàn)場離奇詭異锋拖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祸轮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門兽埃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人适袜,你說我怎么就攤上這事柄错。” “怎么了苦酱?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵售貌,是天一觀的道長。 經(jīng)常有香客問我疫萤,道長颂跨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任扯饶,我火速辦了婚禮恒削,結(jié)果婚禮上池颈,老公的妹妹穿的比我還像新娘。我一直安慰自己钓丰,他們只是感情好躯砰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著携丁,像睡著了一般琢歇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梦鉴,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天李茫,我揣著相機(jī)與錄音,去河邊找鬼尚揣。 笑死涌矢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的快骗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼塔次,長吁一口氣:“原來是場噩夢啊……” “哼方篮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起励负,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤藕溅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后继榆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巾表,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年略吨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了集币。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翠忠,死狀恐怖鞠苟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情秽之,我是刑警寧澤当娱,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站考榨,受9級(jí)特大地震影響跨细,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜河质,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一冀惭、第九天 我趴在偏房一處隱蔽的房頂上張望震叙。 院中可真熱鬧,春花似錦云头、人聲如沸捐友。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匣砖。三九已至,卻和暖如春昏滴,著一層夾襖步出監(jiān)牢的瞬間猴鲫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工谣殊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拂共,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓姻几,卻偏偏與公主長得像宜狐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蛇捌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • 本文包含如下內(nèi)容 CronTrigger簡介 Cron 表達(dá)式 Cron表達(dá)式可選的值 Cron表達(dá)式的配置規(guī)則 ...
    陽春是你閱讀 29,165評論 1 12
  • 本文包含如下內(nèi)容 CronTrigger簡介Cron 表達(dá)式Cron表達(dá)式可選的值Cron表達(dá)式的配置規(guī)則Cron...
    水車閱讀 2,820評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理抚恒,服務(wù)發(fā)現(xiàn),斷路器络拌,智...
    卡卡羅2017閱讀 134,693評論 18 139
  • cron表達(dá)式的格式 Quartz cron表達(dá)式的格式十分類似于UNIX cron格式俭驮,但還是有少許明顯的區(qū)別。...
    H_Man閱讀 1,979評論 0 3
  • Cron表達(dá)式的格式 {秒數(shù)} {分鐘} {小時(shí)} {日期} {月份} {星期} {年份(可為空)} 秒 允許值范...
    驕傲牛閱讀 89,093評論 5 32