Cron表達(dá)式

Cron表達(dá)式

字段釋義

0 0/5 * * * ?

秒 分 時(shí) 天(月) 月 天(周) 年份(一般省略)

符號(hào)釋義

*:表示所有可能的值

/:表示數(shù)值的增量,簡(jiǎn)單來說,比如分寫上0/5表示從0分開始,每隔5分鐘

?:僅用在天(月)和天(周),表示不指定值,當(dāng)其中一個(gè)有值時(shí),另外一個(gè)需要設(shè)為?

字段允許字符

秒:0-59 , - * /

  • 26:表示第26秒
  • 5,16,27:表示第5秒、第16秒和第27秒
  • 1-5:表示從1秒到5秒,就是1 2 3 4 5 秒
  • *:表示每一秒
  • 2/15:表示從第2秒開始,每隔15秒,就是2 17 32 47 秒

分:0-59 , - * /

根據(jù)上述的秒,同理可得

  • 26:表示第26分鐘
  • 5,16,27:表示第5分鐘、第16分鐘和第27分鐘
  • 1-5:表示從1秒到5分,就是第1 2 3 4 5 分鐘
  • *:表示每一分鐘
  • 2/15:表示從第2分鐘開始,每隔15分鐘,就是2 17 32 47 分鐘

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

  • 10:表示早上10點(diǎn)
  • 22:表示晚上10點(diǎn)
  • 2,8,18,23:表示凌晨2點(diǎn),早上8點(diǎn),傍晚6點(diǎn)和晚上11點(diǎn)
  • 9-17:表示朝九晚五,就是9 10 11 12 13 14 15 16 17 點(diǎn)
  • *:表示每小時(shí)
  • 10/2:表示從早上10點(diǎn)開始,每隔2小時(shí)

天(月):1-31 , - * / ? L W C

  • 31:表示31號(hào)(注意有的月份是沒有31號(hào)的)
  • 5,10,15:表示5號(hào)、10號(hào)和15號(hào)
  • 8-17:表示8號(hào)到17號(hào)
  • *:表示所有可能的值(當(dāng)指定為星號(hào)時(shí),天(周)需指定為?)
  • 5/9:表示從5號(hào)開始,每隔9天
  • ?:當(dāng)天(周)指定任意值的時(shí)候,天(月)需要設(shè)置為?
  • L:表示一個(gè)月中的最后一天
  • 6L:表示倒數(shù)第6天
  • 15W:W指工作日,如果15號(hào)不是周六日,則表示15號(hào)當(dāng)天;如果15號(hào)是周六,則表示14號(hào);如果15號(hào)是周日,則表示16號(hào);如果31W是周日,則31W表示29號(hào)(周五),不會(huì)跨月
  • LW:指最后一個(gè)工作日
  • 15C:表示第15天(不是很明白這個(gè),使用15和15C貌似效果相同?)

月:1-12 , - * /

  • 10:表示10月份
  • 5,10,11:表示5月份、10月份和11月份
  • 4-8:表示4月份到8月份
  • *:表示所有可能的值
  • 5/2:表示從5月份開始,每隔2個(gè)月,(就是5 7 9 11 次年5 次年7 次年9......)
  • 1-12:也可以用JAN-DEC表示

天(周):MON-SAT , - * / ? L C #

  • MON:表示周一

  • MON,TUE,FRI:表示周一,周二和周五

  • MON-FRI:表示從周一到周五

  • MON-WED,SAT:表示從周一到周三,和周六(就是周一、周二、周三和周六)

  • mon,tue,wed,thu,fri,sat,sun:表示周一到周日(大小寫均可,取星期英文前三個(gè)字母,注意星期四是thu,而不是thur)

  • 7L:表示最后一個(gè)周六(效果等同于SATL)(L表示last最后的意思,7表示周六,6表示周五,類推,1表示周日)

  • 6C:表示周五以及之后包含周五的日期(感覺效果FRI一樣,具體還沒深究)

  • 7#2:表示第二個(gè)周六(#前面的數(shù)字表示星期,1表示周日,2表示周一,以此類推;#后面的數(shù)字表示第幾個(gè))

年:留空 2020-2099 , - * /

  • 2050:表示2050年
  • 2020,2030,2040:表示2020年、2030年和2040年
  • 2020-2030:表示2020年到2030年
  • *:表示所有可能的值
  • 2020/10:表示從2020年開始,每隔10年,(就是2020,2030,2040......)

栗子

  • 每隔5分鐘執(zhí)行一次(從0分開始)

    0 0/5 * * * ?
    
  • 從0時(shí)開始,每小時(shí)執(zhí)行一次

    0 0 0/1 * * ?
    
  • 每天的7點(diǎn)30分

    0 30 7 * * ?
    
  • 工作日的早上6點(diǎn)30分(即是周一到周五,每天早上的6點(diǎn)30分)

    0 30 7 ? * MON-FRI
    
  • 每個(gè)月的最后一天早上的10點(diǎn)整

    0 0 10 L * ?
    
  • 每個(gè)月的最后一個(gè)工作日的晚上6點(diǎn)30分(18:30)

    0 30 18 LW * ?
    
  • 朝九晚五,每小時(shí)

    0 0 9-17 * * ? 
    
  • 2020年的8月份每個(gè)星期六和星期日早上10點(diǎn)28分28秒

    28 28 10 ? 8 1,7 2020
    

    1,7中,1表示周日,7表示周六

  • 每個(gè)月的倒數(shù)第二天的早上8點(diǎn)整

    0 0 8 L-1 * ? 
    

    L表示最后一天(倒數(shù)第一天),L-1則表示倒數(shù)第二天,以此類推

  • 下面是網(wǎng)上一些例子,我直接拿過來了

    "0 0 12 * * ?" 每天中午12點(diǎn)觸發(fā) 
    "0 15 10 ? * *" 每天上午10:15觸發(fā) 
    "0 15 10 * * ?" 每天上午10:15觸發(fā) 
    "0 15 10 * * ? *" 每天上午10:15觸發(fā) 
    "0 15 10 * * ? 2005" 2005年的每天上午10:15觸發(fā) 
    "0 * 14 * * ?" 在每天下午2點(diǎn)到下午2:59期間的每1分鐘觸發(fā) 
    "0 0/5 14 * * ?" 在每天下午2點(diǎn)到下午2:55期間的每5分鐘觸發(fā) 
    "0 0/5 14,18 * * ?" 在每天下午2點(diǎn)到2:55期間和下午6點(diǎn)到6:55期間的每5分鐘觸發(fā) 
    "0 0-5 14 * * ?" 在每天下午2點(diǎn)到下午2:05期間的每1分鐘觸發(fā) 
    "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發(fā) 
    "0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發(fā) 
    "0 15 10 15 * ?" 每月15日上午10:15觸發(fā) 
    "0 15 10 L * ?" 每月最后一日的上午10:15觸發(fā) 
    "0 15 10 ? * 6L" 每月的最后一個(gè)星期五上午10:15觸發(fā) 
    "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個(gè)星期五上午10:15觸發(fā) 
    "0 15 10 ? * 6#3" 每月的第三個(gè)星期五上午10:15觸發(fā) 
    

要點(diǎn)

  • 一般是有6個(gè)位置,分別表示 分 秒 時(shí) 天(月) 月 天(周) 第7個(gè)位置是年,一般省略
  • 6個(gè)位置中的 天(月) 表示一個(gè)月中的第幾天,即是幾月幾號(hào)中的幾號(hào);天(周) 表示一周中的第幾天,周日為第一天,周六為第七天
  • 天(月)天(周)不能同時(shí)指定,其中必定有一個(gè)是 ?
  • ? 只能用在 天(月)天(周)
  • 2-10:符號(hào) - 表示范圍區(qū)間
  • 2/10:符號(hào) / 表示頻率,從2開始,每隔10,即2,12,22......類推
  • 2,10:符號(hào) , 表示和,2,10表示2和10
  • L:last的縮寫,表示最后,只能用在天(月)天(周),一般和數(shù)字搭配使用,如L在天(月)中表示一個(gè)月中的最后一天,L-1則表示每個(gè)月的倒數(shù)第二天;3L在天(周)中則表示最后一個(gè)星期二

小結(jié)

  • 之前也接觸過cron,不過上網(wǎng)上找到想要的效果之后便沒有繼續(xù)深究,現(xiàn)在想改個(gè)需求又得重蹈覆轍,所以便記錄一下,參考過許多博客,理解之后才寫下此文,或許有疏漏之處,歡迎指正!
  • 理解之后,就很容易寫的出來,還是要靠理解
  • 附上一個(gè)在線Cron表達(dá)式生成器,網(wǎng)上找的: http://qqe2.com/dev/cron

題外知識(shí)

月份的英語單詞:

一月:January;

二月:February;

三月:March;

四月:April;        

五月:May;  

六月:June;

七月:July; 

八月:August;        

九月:September; 

十月:October;

十一月:November; 

十二月:December

星期拼寫

星期一:Monday,讀音['m?ndi, 'm?ndei],英文縮寫Mon。

星期二:Tuesday,讀音['tju:zdi],英文縮寫Tue。

星期三:Wednesday,讀音['wenzdei, 'wenzdi],英文縮寫Wed。

星期四:Thursday,讀音['θ?:zdi],英文縮寫Thur。

星期五:Friday,讀音['fraidi],英文縮寫Fri。

星期六:Saturday,讀音['s?t?di],英文縮寫Sat。

星期日:Sunday,讀音['s?ndi],英文縮寫Sun。

星期一到星期日的英文由來

星期一到星期日的英文由來

星期一:月亮日。西方人把這天獻(xiàn)給月之女神,因?yàn)樗麄兿嘈旁碌臐M虧會(huì)影響農(nóng)作物的生長(zhǎng)。

星期二:戰(zhàn)神日。傳說歐洲戰(zhàn)神Tyr掌管法律和秩序,有次為了制服狼精被咬斷了一只手,于是以他的名字命名了星期二。

星期三:風(fēng)神日。西方人為了紀(jì)念風(fēng)暴之神”Woden”,因?yàn)樗I(lǐng)導(dǎo)神族跟巨人族作戰(zhàn),還犧牲自己銳利的左眼。

星期四:雷神日。這是為了紀(jì)念雷神”Thor”,他經(jīng)常帶著一把大鐵錘,關(guān)于雷神Thor的鐵錘還發(fā)生過有趣的故事,感興趣的人可以了解一下。

星期五:古英文中Friday意思是Frigg’s day,F(xiàn)rigg是北歐神話中主司婚姻和生育的女神。

星期六:源于羅馬的薩圖恩神,它是掌管五谷的農(nóng)神。

星期日:太陽日。因?yàn)橐d復(fù)活的日子是星期日,所以現(xiàn)在大多數(shù)國(guó)家都以星期日為假日。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容