日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

定时器 cron 表达式

發(fā)布時(shí)間:2023/11/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时器 cron 表达式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)單的來說,cron?表達(dá)式可以看作是一個(gè)有5~7個(gè)以空格隔開的的單個(gè)字符組成的一組字符串,這5~7個(gè)字符就表示了5~7個(gè)域,每個(gè)域從左到右依次為?秒?分?時(shí)?日?月?星期?年?。?cron?表達(dá)式在不同的語言中可用的域是不同,下面分別從spring和linux兩個(gè)維度進(jìn)行分析。

Spring 定時(shí)器 cron 表達(dá)式

Cron有如下兩種語法?
格式:?

Seconds Minutes Hours DayofMonth Month DayofWeek Year 或?
Seconds Minutes Hours DayofMonth Month DayofWeek?

每一個(gè)域可出現(xiàn)的字符如下:

代碼
Seconds:可出現(xiàn),- ?* ?/ 四個(gè)字符,有效范圍為0-59的整數(shù) ? ?
Minutes:可出現(xiàn),- ?* ?/ 四個(gè)字符,有效范圍為0-59的整數(shù) ? ?
Hours:可出現(xiàn),- ?* ?/ 四個(gè)字符,有效范圍為0-23的整數(shù) ? ?
DayofMonth:可出現(xiàn),- ?* ?/ ? L W C八個(gè)字符,有效范圍為0-31的整數(shù) ? ??
Month:可出現(xiàn),- ?* ?/ 四個(gè)字符,有效范圍為1-12的整數(shù)或JAN-DEc ? ?
DayofWeek:可出現(xiàn),- ?* ?/ ? L C #四個(gè)字符,有效范圍為1-7的整數(shù)或SUN-SAT兩個(gè)范圍。1表示星期天,2表示星期一, 依次類推 ? ?
Year:可出現(xiàn),- ?* ?/ 四個(gè)字符,有效范圍為1970-2099年 ??
?
每一個(gè)域都使用數(shù)字,但還可以出現(xiàn)如下特殊字符,它們的含義是:

(1)*:表示匹配該域的任意值,假如在Minutes域使用*,即表示每分鐘都會(huì)觸發(fā)事件。 ? ?
? ?
(2)?:只能用在DayofMonth和DayofWeek兩個(gè)域。它也匹配域的任意值,但實(shí)際不會(huì)。因?yàn)镈ayofMonth和DayofWeek會(huì)相互影響。
例如想在每月的20日觸發(fā)調(diào)度,不管20日到底是星期幾,則只能使用如下寫法: 13 ?13 15 20 * ?,其中最后一位只能用?,而不能使用*,
如果使用*表示不管星期幾都會(huì)觸發(fā),實(shí)際上并不是這樣。 ? ?
? ?
(3)-:表示范圍,例如在Minutes域使用5-20,表示從5分到20分鐘每分鐘觸發(fā)一次 ? ?
?
(4)/:表示起始時(shí)間開始觸發(fā),然后每隔固定時(shí)間觸發(fā)一次,例如在Minutes域使用5/20,則意味著5分鐘觸發(fā)一次,而25,45等分別觸發(fā)一次. ? ?
? ?
(5),:表示列出枚舉值值。例如:在Minutes域使用5,20,則意味著在5和20分每分鐘觸發(fā)一次。 ? ?
? ?
(6)L:表示最后,只能出現(xiàn)在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味著在最后的一個(gè)星期四觸發(fā)。 ? ?
? ?
(7)W:表示有效工作日(周一到周五),只能出現(xiàn)在DayofMonth域,系統(tǒng)將在離指定日期的最近的有效工作日觸發(fā)事件。
例如:在DayofMonth使用5W,如果5日是星期六,則將在最近的工作日:星期五,即4日觸發(fā)。如果5日是星期天,則在6日觸發(fā);
如果5日在星期一到星期五中的一天,則就在5日觸發(fā)。另外一點(diǎn),W的最近尋找不會(huì)跨過月份 ? ?

(8)LW:這兩個(gè)字符可以連用,表示在某個(gè)月最后一個(gè)工作日,即最后一個(gè)星期五。 ? ?
(9)#:用于確定每個(gè)月第幾個(gè)星期幾,只能出現(xiàn)在DayofMonth域。例如在4#2,表示某月的第二個(gè)星期三。 ??
?
舉幾個(gè)例子:

0 0 ?2 ?1 * ?? * ?表示在每月的1日的凌晨2點(diǎn)調(diào)度任務(wù) ? ??
0 15 10 ? * ?MON-FRI 表示周一到周五每天上午10:15執(zhí)行作業(yè) ? ? ? ? ? ??
0 15 10 ? 6L 2002-2006 表示200-2006年的每個(gè)月的最后一個(gè)星期五上午10:15執(zhí)行作業(yè) ??

linux 定時(shí)器 cron 表達(dá)式

在crontab?中的cron?表達(dá)式有5個(gè)域,從左到右依次為分?時(shí)?日?月?星期

完整格式說明如下:

域說明是否必填值范圍允許通配符
一小時(shí)中的哪一分鐘0~59,?-?*?/
時(shí)一天中的什么時(shí)間0~23,?-?*?/
一月中的哪一天1~31??-?*?/?L?W
一年中的哪一月1~12/JAN-DEC,?-?*?/
星期一周中的哪一天1~7/SUN-SAT,?-?*?/???L?#

關(guān)于通配符的說明:

通配符含義說明
,匹配一個(gè)枚舉值的集合表示列出一個(gè)枚舉值集合,滿足枚舉值條件的值都會(huì)觸發(fā)。例如在分域中使用1,2?,則意味著在1和2分鐘的時(shí)候分別觸發(fā)一次。
-匹配一個(gè)范圍表示一個(gè)范圍值,滿足在范圍內(nèi)的值都會(huì)觸發(fā)。例如在時(shí)域中時(shí)用0-10,則意味著在0點(diǎn)到10點(diǎn)每個(gè)小時(shí)都會(huì)觸發(fā)一次。
*匹配任意值表示匹配域中的任意值。例如在分域中使用*,則意味著任何每一分鐘都滿足觸發(fā)條件。
/匹配指定的間隔表示從起始時(shí)間開始,每隔指定間隔時(shí)間觸發(fā)。例如在日域中使用1/3,則意味著,從每月1號(hào)開始,每隔3天觸發(fā)一次,也可以使用*/3,則意味著每隔3天就會(huì)觸發(fā)一次。
?忽略該域個(gè)人理解為忽略該域。因?yàn)樵谌沼蚝托瞧谟蛉绻瑫r(shí)存在值的話,就會(huì)導(dǎo)致兩個(gè)域沖突,而達(dá)不到想要的觸發(fā)效果。例如在日域指定值為2表示在每個(gè)月的2號(hào)觸發(fā),這個(gè)時(shí)候星期域就必須使用?通配符,因?yàn)槿绻谛瞧谟蛟僦付ㄒ粋€(gè)明確的值的如3的話,就會(huì)導(dǎo)致如果2號(hào)不是指定星期的第三天,那么就不會(huì)觸發(fā),從而就達(dá)不到每月2號(hào)執(zhí)行的預(yù)期。
Llast,匹配最后一天表示匹配一月或者一個(gè)星期的最后一天。例如在月域中使用L,則意味著在每月的最后一天觸發(fā)。
Wwork,匹配最近的一個(gè)工作日表示匹配指定離指定日期最近的一個(gè)工作日。例如在日域中使用5W,則意味著在距離5號(hào),最近的一個(gè)工作日觸發(fā)。
#匹配第幾個(gè)星期幾表示匹配在第幾個(gè)星期幾執(zhí)行。該通配符只能在星期域中使用。例如使用5#2,則意味著在每月的第2個(gè)星期5觸發(fā)。

舉例:

?實(shí)例
?每1分鐘執(zhí)行一次?*?*?*?*?*?command/1 * * * * command
?每小時(shí)的第15,30,45分鐘執(zhí)行?15,30,45 *?*?*?*?command
?7點(diǎn)到10點(diǎn)的第10,50分鐘執(zhí)行?10,20 7-50 *?*?*?command
?每隔一天的7點(diǎn)到11點(diǎn)的第20和第40分鐘執(zhí)行?20,40 7-11?*/1?*?*?command
?每周一的7點(diǎn)到11點(diǎn)的第25和第50分鐘執(zhí)行25,50 7-11?*?*?1?command
?每天的3:30執(zhí)行?30?3?*?*?*?command
?每月1、10、20日的3?:?30執(zhí)行?30 3?1,10,20?*?* command
?每周六、周日的3?:?30執(zhí)行?30?3?*?*?6,0?command30?3?*?*?6,7?command
?每天9點(diǎn)到16點(diǎn)之間每隔15分鐘執(zhí)行?/15 9-16 * * * command

總結(jié)

以上是生活随笔為你收集整理的定时器 cron 表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。