cron定時任務

cron定時任務

一、Cron表達式的定義

基礎結構

Cron表達式是由空格分隔的6或7個字段組成的字符串,格式為:

秒 分 時 日 月 星期 [年]

其中,年通常可以被省略

字段說明

  1. (0-59)

    秒字段表示每分鐘的哪一秒執行任務。取值范圍為0-59。

    例如,如果要每分鐘的第30秒執行任務,可以使用30 * * * * ?的格式。

  2. (0-59)

    分字段表示每小時的哪一分鐘執行任務。取值范圍為0-59。

    例如,如果要每小時的第15分鐘執行任務,可以使用* 15 * * * ?的格式。

  3. (0-23)

    時字段表示每天的哪一個小時執行任務。取值范圍為0-23。

    例如,如果要每天的凌晨2點執行任務,可以使用* * 2 * * ?的格式。

  4. (1-31)

    日字段表示每月的哪一天執行任務。取值范圍為1-31。

    例如,如果要每月的第一天執行任務,可以使用* * * 1 * ?的格式。

  5. (1-12或JAN-DEC)

    月字段表示每年的哪一個月執行任務。取值范圍為 1-12 或用字符串 JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC 表示。

    例如,如果要每年的1月1日執行任務,可以使用* * * 1 1 ?的格式。

  6. 星期(0-6或SUN-SAT,0/7為周日)

    周字段表示每周的哪一天執行任務。取值范圍為0-6,也可以用字符串 SUN, MON, TUE, WED, THU, FRI, SAT 表示,其中0表示周日,1表示周一,以此類推。例如,如果要每周的周五執行任務,可以使用* * * * * 5 ?的格式。

二、特殊字符

字符含義示例
*表示所有取值范圍內的值,可解讀為 “每* * * * * * 每秒執行
?不指定值(僅用于日和星期沖突時)0 0 5 * ? 每天5點
-范圍0 9-17 * * * 9點到17點每小時
/步長*/5 * * * * 每5分鐘
,枚舉0 0 8,12,18 * * 每天8/12/18點
L最后一天0 0 L * * 每月最后一天
W最近工作日0 0 15W * * 15日最近的工作日
#用于指定某個月份的第幾個周幾,只能作用于 “周” 上0 0 * * 5#2 每月第2個周五

以下是Cron表達式中特殊字符的詳細解析(基于2025年最新實踐):

1、核心特殊字符

  1. *(通配符)

    • 匹配該字段所有有效值
    • 示例:0 * * * * ? 每分鐘的0秒觸發
  2. ?(不指定)

    • 僅用于星期字段,解決兩者沖突
    • 示例:0 0 12 1 * ? 每月1日中午執行(忽略星期)
  3. /(步長)

    • 表示時間間隔增量
    • 示例:0/15 * * * * ? 每15秒觸發

2、范圍與枚舉

  1. ,(枚舉)

    • 指定多個離散值
    • 示例:0 0 8,12,18 * * ? 每天8/12/18點執行
  2. -(范圍)

    • 定義連續時間段
    • 示例:0 0 9-17 * * MON-FRI 工作日9-17點每小時執行

3、高級邏輯字符

  1. L(最后一天)

    • 字段:L表示月末最后一天
    • 星期字段:L表示當月最后一個周日
    • 示例:0 0 12 L * ? 每月最后一天中午執行
  2. W(最近工作日)

    • 自動調整到最近的工作日(周一至周五)
    • 示例:0 0 12 15W * ? 每月15日最近的工作日執行
  3. #(第N個星期幾)

    • 指定某月第N個特定星期
    • 示例:0 0 12 ? * 5#2 每月第二個周五中午執行

4、特殊組合

組合說明示例
LW當月最后一個工作日0 0 12 LW * ?
L-3月末倒數第3天0 0 12 L-3 * ?
5W5日最近的工作日0 0 12 5W * ?

三、預定義規則

1、核心預定義規則

  1. 基礎周期規則

    • @yearly@annually
      每年1月1日 00:00 執行(等效于0 0 1 1 *
    • @monthly
      每月1日 00:00 執行(等效于0 0 1 * *
    • @weekly
      每周日 00:00 執行(等效于0 0 * * 0
    • @daily@midnight
      每天 00:00 執行(等效于0 0 * * *
    • @hourly
      每小時整點執行(等效于0 * * * *
  2. 自定義間隔規則

    • @every <duration>
      支持任意時間間隔(需符合time.ParseDuration格式)
      示例:
      @every 1h30m10s  // 每1小時30分鐘10秒
      @every 5m        // 每5分鐘
      @every 10s       // 每10秒
      

2、特殊說明

  1. 執行邏輯差異

    • @every的間隔從任務開始運行時計算(非自然時間對齊)
      例如:@every 1h若任務耗時3分鐘,則下次執行在57分鐘后
  2. 時區處理
    預定義規則默認使用本地時區,可通過以下方式修改:

    // 方法1:全局設置時區
    loc, _ := time.LoadLocation("Asia/Shanghai")
    c := cron.New(cron.WithLocation(loc))// 方法2:單任務指定時區
    c.AddFunc("CRON_TZ=Asia/Tokyo @daily", task)
    

3、使用示例

package main
import ("fmt""github.com/robfig/cron/v3"
)
func main() {c := cron.New()// 添加預定義規則任務c.AddFunc("@hourly", func() { fmt.Println("每小時執行") })c.AddFunc("@every 30m", func() { fmt.Println("每30分鐘執行") })c.Start()defer c.Stop()select{}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80571.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80571.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80571.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分布式之易混淆概念

昨天寫UE寫的破防了&#xff0c;忘了寫文章&#xff0c;今天補一下分布式的一些概念。&#x1f61a; 在軟件架構領域&#xff0c;微服務、領域驅動設計&#xff08;DDD&#xff09;和分布式系統是三個高頻且容易被混淆的概念。許多開發者誤以為它們是“同一件事的不同說法”&a…

量子躍遷:Vue組件安全工程的基因重組與生態免疫(完全體終局篇)

開篇數字免疫系統的范式革命 在2025年某國際金融峰會期間&#xff0c;黑客組織利用量子計算技術對全球37個交易系統發起協同攻擊。傳統安全組件在2.7秒內集體失效&#xff0c;造成每秒超18億美元的交易漏洞。這場數字"切爾諾貝利"事件促使我們重新定義前端安全——組…

Operating System 實驗七 Linux文件系統實驗

實驗目標: 使用dd命令創建磁盤鏡像文件ext2.img并格式化為ext2文件系統,然后通過mount命令掛載到Linux主機文件系統。查看ext2文件系統的超級塊的信息,以及數據塊的數量、數據塊的大小、inode個數、空閑數據塊的數量等信息 在文件系統中創建文件xxxxx.txt(其中xxxxx為你的學…

模型識別能力錘煉及清單

大腦將注意力分配給需要消耗腦力的活動&#xff0c;通過學習技能&#xff0c;大腦也能更輕松的工作。這個時候&#xff0c;大腦負責管理注意力控制和努力控制的區域活動會大幅減少。沉浸式學習是學習一門新的語言的最佳方式&#xff0c;也是深入洞察錯綜復雜商業環境的絕佳途徑…

Android 混合開發實戰:統一 View 與 Compose 的淺色/深色主題方案

整個應用&#xff08;包括 View 和 Compose 部分&#xff09;的淺色/深色模式保持一致。以下是完整的解決方案&#xff1a; 全局配置方案 1. 基礎主題設置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定義統一的主題&#xff1a; <!-- values/themes.x…

QT開發技術【QT實現桌面右下角消息】

一、效果 ![ 二、彈窗主體部分 noticewidget /* ** File name: NoticeWidget.h ** Author: ** Date: 2025-04-25 ** Brief: 通知欄控件 ** Copyright (C) 1392019713qq.com All rights reserved. */#include "../Include/NoticeWidget.h"…

在LiveGBS GB28181互聯網安防監控平臺中關于redis版本切換的方法說明

目錄 1、Redis服務2、如何切換REDIS? 2.1、停止啟動REDIS2.2、配置信令服務2.3、配置流媒體服務2.4、啟動3、搭建GB28181視頻直播平臺 1、Redis服務 在LivGBS中Redis作為數據交換、數據訂閱、數據發布的高速緩存服務。默認LiveCMS解壓目錄下會攜帶一個REDIS服務。如果已經有自…

vue3中的effectScope有什么作用,如何使用?如何自動清理

vue3中的effectScope有什么作用&#xff0c;如何使用?如何自動清理 vue3中的effectScope有什么作用&#xff0c;如何使用 官網介紹&#xff1a;作用特點簡單示例&#xff1a;自動清理示例 官網介紹&#xff1a; 創建一個 effect 作用域&#xff0c;可以捕獲其中所創建的響應…

搭建基于火災風險預測與防范的消防安全科普小程序

基于微信小程序的消防安全科普互動平臺的設計與實現&#xff0c;是關于微信小程序的&#xff0c;知識課程學習&#xff0c;包括學習后答題。 技術棧主要采用微信小程序云開發&#xff0c;有下面的模塊&#xff1a; 1.課程學習模塊 2.資訊模塊 3.答題模塊 4.我的模塊 還需…

python 與Redis操作整理

以下是使用 Python 操作 Redis 的完整整理&#xff0c;涵蓋基礎操作、高級功能及最佳實踐&#xff1a; 1. 安裝與連接 (1) 安裝庫 pip install redis(2) 基礎連接 import redis# 創建連接池&#xff08;推薦復用連接&#xff09; pool redis.ConnectionPool(hostlocalhost, …

什么時候使用Python 虛擬環境(venv)而不用conda

是的&#xff01;python3.9 -m venv rtdetr_env 是 Python 原生的虛擬環境&#xff08;venv&#xff09;&#xff0c;而 conda 是另一個流行的虛擬環境管理工具&#xff08;來自 Anaconda/Miniconda&#xff09;。下面我會詳細對比兩者的區別&#xff0c;并講解 venv 的基本用法…

ubuntu20.04安裝x11vnc遠程桌面

x11vnc是一個VNC服務器, 安裝后我們可以不依賴外部的顯示設備, 通過網絡遠程登錄ubuntu桌面。 安裝x11vnc sudo apt-get install x11vnc 設置VNC登錄密碼 sudo x11vnc -storepasswd /etc/x11vnc.pwd 設置x11vnc在開機時自動啟動 新建如下文件: sudo vi /lib/systemd/sys…

Maven的概念與初識Maven

目錄 一、Maven的概念 1. 什么是Maven 2. 項目構建&#xff1a;從代碼到部署的標準化流程 2.1 Maven構建生命周期 2.2 傳統構建 vs Maven構建 3. 依賴管理&#xff1a;解決“JAR地獄”的利器 3.1 依賴聲明 3.2 依賴傳遞與沖突解決 4. Maven倉庫&#xff1a;依賴的存儲…

Unity-Shader詳解-其二

前向渲染和延遲渲染 前向渲染和延遲渲染總的來說是我們的兩種主要的渲染方式。 我們在Unity的Project Settings中的Graphic界面能夠找到渲染隊列的設定&#xff1a; 我們也可以在Main Camera這里進行設置&#xff1a; 那這里我們首先介紹一下兩種渲染&#xff08;Forward R…

C++ 中 std::tuple 使用詳解

C 中 std::tuple 使用詳解 基本概念 std::tuple 是 C11 引入的模板類&#xff0c;用于打包任意數量、任意類型的值在一起。可看作是類型安全的變長結構體。 #include <tuple>std::tuple<int, std::string, double> t(42, "hello", 3.14);創建 tuple 的…

WebRTC基于網頁的視頻會議,手寫WebRTC流程(html)

WebRTC是web real-time communication網頁及時通信的縮寫&#xff0c;通過javascript就可以實現網頁會話&#xff0c;基于瀏覽器開發出來多媒體應用&#xff0c; 以下是手寫的WEBRTC調用本地攝像頭的html代碼&#xff0c;直接用瀏覽器打開&#xff0c;就可以使用 <!DOCTYPE…

MyBatis 官方子項目詳細說明及表格總結

MyBatis 官方子項目詳細說明及表格總結 1. 核心子項目說明 1.1 mybatis-3 GitHub 鏈接&#xff1a;https://github.com/mybatis/mybatis-3功能&#xff1a; MyBatis 核心框架的源碼&#xff0c;提供 SQL 映射、動態 SQL、緩存、事務管理等核心功能。主要功能&#xff1a; 支持…

【虛幻C++筆記】碰撞檢測

目錄 碰撞檢測參數詳情示例用法 碰撞檢測 顯示名稱中文名稱CSphere Trace By Channel按通道進行球體追蹤UKismetSystemLibrary::SphereTraceSingleSphere Trace By Profile按描述文件進行球體追蹤UKismetSystemLibrary::SphereTraceSingleByProfileSphere Trace For Objects針…

推論階梯——AI與思維模型【81】

一、定義 推論階梯思維模型是一種用于分析和理解人們如何從觀察到的事實,經過一系列的假設、推理和判斷,最終得出結論的思維過程的理論框架。它將這個過程比喻為一個階梯,每一步都建立在前一步的基礎上,逐漸形成一個完整的推論。這個模型幫助我們意識到在思考和決策過程中…

小剛說C語言刷題——1109加密四位數

1.題目描述 某軍事單位用 4位整數來傳遞信息&#xff0c;傳遞之前要求先對這個 4 位數進行加密。加密的方式是每一位都先加上 5然后對 10取余數&#xff0c;再將得到的新數顛倒過來。 例如&#xff1a;原數是 1379 &#xff0c;那么每位加 55對 10 取余數的結果為 6824 &…