最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

cron 表達(dá)式: 一套用于指定定時(shí)任務(wù)的表達(dá)式

2023-08-12 23:22 作者:寫(xiě)代碼的寶哥  | 我要投稿

Cron 是一種用于設(shè)置定期執(zhí)行任務(wù)的表達(dá)式。最早出現(xiàn)于 Unix 操作系統(tǒng),crontab 軟件中就是一款使用這套語(yǔ)法的任務(wù)管理工具,常用于備份系統(tǒng)或清理日志。

圖片來(lái)源:https://buddy.works/

現(xiàn)在,Cron 表達(dá)式已被廣泛地應(yīng)用于各種操作系統(tǒng)和應(yīng)用程序中。平時(shí)看到的像是 0 0 * * **/5 * * * * 等這些字符串都屬于 Cron 表達(dá)式。Node.js 中也支持使用 cron 包來(lái)指定定時(shí)任務(wù)。

既然使用那么廣泛,那么它是如何定義的呢?接下來(lái)我們就來(lái)學(xué)習(xí)。

語(yǔ)法

經(jīng)典的 Cron 表達(dá)式由 5 位構(gòu)成,中間用空格分割。語(yǔ)法如下:

[minute] [hour] [day of month] [month] [day of week]

每個(gè)字段的含義是:

  • [minte] 表示分鐘。取值范圍 0 到 59

  • [hour] 表示小時(shí)。取值范圍 0 到 23

  • [day of month] 表示幾號(hào)。取值范圍 1 到 23

  • [month] 表示幾月。取值范圍 1 到 12,也可以是用名稱(chēng)簡(jiǎn)寫(xiě)(從 JanDec

  • [day of week] 表示周幾。取值范圍 0 到 6,也可以是用名稱(chēng)簡(jiǎn)寫(xiě)(從 SunSat

通用模式

每個(gè)位置上除了上面列舉的值,還有一些通用模式可以使用:

  • 逗號(hào) ,:表示當(dāng)前使用的值的列表。比如 [minte] 取值 1,3,5 時(shí),表示1分、3分和5分時(shí)各執(zhí)行一次

  • 連字符號(hào) -:表示當(dāng)前使用的值的范圍。比如 [minte] 取值 1-5 時(shí),等同于 1,2,3,4,5,表示1分、2分、3分、4分和5分時(shí)各執(zhí)行一次

  • 星號(hào) *:表示“從頭到尾(frist-last)”。比如 [minte] 取值 * 時(shí),等同于 0-59,表示每分鐘執(zhí)行一次

  • 斜杠符號(hào) /:表示步進(jìn)。比如 [minte] 取值 */2,表示每 2 分鐘執(zhí)行一次,即在2分、4分……58分、0分(下一個(gè)小時(shí))分別執(zhí)行一次;當(dāng) [minte] 取值 1-9/2 時(shí),等同于 1,3,5,7,9,表示1分、5分、5分、7分和9分時(shí)各執(zhí)行一次。步進(jìn)默認(rèn)為 1,即 * 的寫(xiě)法等同于 */1,表示每分鐘執(zhí)行一次。

練習(xí)


* * * * *


表示每分鐘執(zhí)行一次。等同于 */1 * * * *0-59/1 * * * *。


*/30 * * * *


表示每半個(gè)小時(shí)執(zhí)行一次。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-08-03 16:00:00

  • then at 2023-08-03 16:30:00

  • then at 2023-08-03 17:00:00

  • then at 2023-08-03 17:30:00

  • then at 2023-08-03 18:00:00

  • ……


0 * * * *


表示每小時(shí)(整點(diǎn))執(zhí)行一次。等同于 0 */1 * * *


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-08-03 16:00:00

  • then at 2023-08-03 17:00:00

  • then at 2023-08-03 18:00:00

  • then at 2023-08-03 19:00:00

  • then at 2023-08-03 20:00:00

  • ……


0 9-17 * * *


從早上9點(diǎn)到下午5點(diǎn),每小時(shí)(整點(diǎn))執(zhí)行一次。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-08-03 16:00:00

  • then at 2023-08-03 17:00:00

  • then at 2023-08-04 09:00:00

  • then at 2023-08-04 10:00:00

  • then at 2023-08-04 11:00:00

  • ……


0 0 * * *


表示每天(整點(diǎn))執(zhí)行一次。等同于 0 0 */1 * *。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-08-04 00:00:00

  • then at 2023-08-05 00:00:00

  • then at 2023-08-06 00:00:00

  • then at 2023-08-07 00:00:00

  • then at 2023-08-08 00:00:00

  • ……


0 8 * * *


表示每天上午 8 點(diǎn)執(zhí)行一次。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-08-04 08:00:00

  • then at 2023-08-05 08:00:00

  • then at 2023-08-06 08:00:00

  • then at 2023-08-07 08:00:00

  • then at 2023-08-08 08:00:00

  • ……


0 8 * * 5


表示每周五上午 8 點(diǎn)執(zhí)行一次。等同于 0 0 * * FRI,相當(dāng)于是 1 周執(zhí)行 1 次。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-08-04 00:00:00

  • then at 2023-08-11 00:00:00

  • then at 2023-08-18 00:00:00

  • then at 2023-08-25 00:00:00

  • then at 2023-09-01 00:00:00

  • ……


0 8 * * 4,5 則表示每周四、每周五早上 8 點(diǎn)執(zhí)行一次。


0 0 * * 1-5


表示每個(gè)工作日 8 點(diǎn)執(zhí)行一次。


0 8 * * 6,0 則表示周末兩天早 8 點(diǎn)執(zhí)行一次。


0 0 1 * *


表示每月 1 號(hào)執(zhí)行一次。等同于 0 0 1 */1 *。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-09-01 00:00:00

  • then at 2023-10-01 00:00:00

  • then at 2023-11-01 00:00:00

  • then at 2023-12-01 00:00:00

  • then at 2024-01-01 00:00:00

  • ……


0 0 1 */3 *


表示每個(gè)季度執(zhí)行一次。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2023-10-01 00:00:00

  • then at 2024-01-01 00:00:00

  • then at 2024-04-01 00:00:00

  • then at 2024-07-01 00:00:00

  • then at 2024-10-01 00:00:00

  • ……


0 0 1 1 *


表示每年執(zhí)行一次(1月1號(hào) 00:00)。


如果當(dāng)前是 2023-08-03 15:41。那么后續(xù)執(zhí)行時(shí)間分別是:


  • next at 2024-01-01 00:00:00

  • then at 2025-01-01 00:00:00

  • then at 2026-01-01 00:00:00

  • then at 2027-01-01 00:00:00

  • then at 2028-01-01 00:00:00

  • ……


掌握以上所列舉的這些表達(dá)式就足夠以后使用的了。


Node.js 中使用


Node.js 可以使用 cron 包執(zhí)行定時(shí)任務(wù)。需要注意的是,cron 采用的是 6 位 Cron 表達(dá)式語(yǔ)法。


跟經(jīng)典語(yǔ)法相比:

1. 第一位表示“秒”,而不是經(jīng)典定義中的“分鐘”
2.?另外,cron 包目前的 v2 版本的[month]的取值范圍是 0~11,而非 1~12。不過(guò)官方文檔說(shuō),cron v3 版本開(kāi)始[month]的取值范圍將調(diào)整為 1~12。


下面就來(lái)安裝依賴(lài)。

使用方式如下:


總結(jié)

Cron 是一種用于設(shè)置定期執(zhí)行任務(wù)的表達(dá)式,語(yǔ)法比較簡(jiǎn)單,常用于備份系統(tǒng)或清理日志,現(xiàn)在已被廣泛地應(yīng)用于各種操作系統(tǒng)和應(yīng)用程序中。

經(jīng)典的 Cron 表達(dá)式由 5 位構(gòu)成,中間用空格分割,分表表示“分鐘”、“小時(shí)”、“幾號(hào)”、“幾月” 和 “周幾”。實(shí)際使用時(shí),不同軟件可能會(huì)做一些拓展,比如 Node.js 的 Cron 使用的就是 6 位,稍稍注意一下即可。

參考鏈接

https://www.npmjs.com/package/cron
https://crontab.guru/
http://crontab.org/


cron 表達(dá)式: 一套用于指定定時(shí)任務(wù)的表達(dá)式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阜宁县| 兖州市| 山东| 金寨县| 潮安县| 萨迦县| 石泉县| 临泽县| 宣武区| 清水县| 大足县| 南安市| 广平县| 泾阳县| 永兴县| 普兰店市| 青铜峡市| 汉阴县| 汤原县| 疏勒县| 桑植县| 吕梁市| 泸西县| 彭泽县| 高雄县| 夏津县| 清水河县| 当雄县| 丰城市| 尉犁县| 金乡县| 渑池县| 伊吾县| 峨边| 绩溪县| 马关县| 新河县| 松溪县| 南江县| 页游| 三原县|