cron是在基于Unix的系統(tǒng)上可用的基本實(shí)用程序蔓同。 它使用戶可以安排任務(wù)在指定的日期/時(shí)間定期運(yùn)行;cron表達(dá)式格式被廣泛采用乾戏,如SpringBoot中的定時(shí)器合搅。
Cron表達(dá)式
cron表達(dá)式包含6個(gè)字段:
<second> <minute> <hour> <day-of-month> <month> <day-of-week> <year> <command>
上面這些字段中多搀,<year>字段是可選填的。
每個(gè)字段可填寫的值如下:
字段名 | 允許值 | 允許字符 |
---|---|---|
second | 0-59 | , - * / |
minute | 0-59 | , - * / |
hour | 0-23 | , - * / |
day-of-month | 0-31 | , - * ? / L W C |
month | 1-12 or JAN-DEC | , - * / |
day-of-week | 1-7 or SUN-SAT | , - * / ? L C # |
year | 1970-2099 | , - * / |
表達(dá)式中字符
* (all) 它用于指定事件應(yīng)在每個(gè)時(shí)間單位發(fā)生灾部。 例如:在 <minute> 中使用
*
康铭,表示每分鐘都會(huì)執(zhí)行。? (any) 在<day-of-month>和<day-of-week>字段中使用它來表示任意值赌髓,忽略該字段值从藤。 例如,我們想要在每個(gè)月的5號(hào)觸發(fā)它锁蠕,而不管它這天是周幾夷野,這樣就可以將 <day-of-week> 指定為“?”。
- (range) 表示值的范圍荣倾,例如悯搔,<hour>字段中的“10-11”表示第10和第11個(gè)小時(shí)會(huì)執(zhí)行。
, (values) 用戶指定多個(gè)值舌仍,例如妒貌,<day-of-week>中設(shè)置”MON, WED, FRI“則表示周一、周三铸豁、周五會(huì)執(zhí)行灌曙。
/ (increments) 指定增量值。 例如节芥,<minute>字段中設(shè)置“ 5/15”則表示每小時(shí)的5在刺、20、35和50分鐘執(zhí)行(從第5分鐘開始每隔15分鐘執(zhí)行一次)头镊。
L (last) 在各個(gè)字段中使用時(shí)蚣驼,它具有不同的含義。 例如相艇,如果在<day-of-month>字段中使用它隙姿,則表示月份的最后一天,如“1月31日”厂捞,根據(jù)日歷月份依此類推。 它也可以與”-“一起使用队丝,例如“L-3”靡馁,它表示“日歷月的第三天到最后一天”。 在<day-of-week>中机久,它指定“一周的最后一天”臭墨。 它也可以與<day-of-week>中的另一個(gè)值一起使用,例如“ 6L”膘盖,表示“最后一個(gè)星期五”
W (weekday) 用于指定最接近該月某一天的工作日(周一到周五)胧弛。例如尤误,如果我們?cè)?lt;day-of-month>字段中指定10W,那么它意味著該月10日附近的工作日结缚。所以如果10號(hào)是星期六损晤,那么9號(hào)觸發(fā)作業(yè),如果10號(hào)是星期天红竭,那么11號(hào)觸發(fā)作業(yè)尤勋。如果您在<day-of-month>中指定了1W,如果1日是星期六茵宪,那么作業(yè)將在3日即星期一被觸發(fā)最冰,它將不會(huì)跳回前一個(gè)月。
# 它用于指定每個(gè)月第幾個(gè)星期幾稀火,例如暖哨,“該月的第三個(gè)星期五”可以表示為“6#3”。
C 該字符只在<day-of-month>和<day-of-week>字段中使用凰狞,代表“Calendar”的意思篇裁。它的意思是計(jì)劃所關(guān)聯(lián)的日期,如果日期沒有被關(guān)聯(lián)服球,則相當(dāng)于日歷中所有日期茴恰。例如 5C 在日期字段中就相當(dāng)于日歷 5 日以后的第一天;1C 在星期字段中相當(dāng)于星期日后的第一天斩熊。
Cron表達(dá)式示例
每天上午8點(diǎn)
0 0 8 * * ?
...