定时任务——Cron表达式详解

2023-11-15

Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: 

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

每一个域可出现的字符如下: 
Seconds:可出现", - * /"四个字符,有效范围为0-59的整数 
Minutes:可出现", - * /"四个字符,有效范围为0-59的整数 
Hours:可出现", - * /"四个字符,有效范围为0-23的整数 
DayofMonth:可出现", - * / ? L W C"八个字符,有效范围为0-31的整数 
Month:可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc 
DayofWeek:可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推 
Year:可出现", - * /"四个字符,有效范围为1970-2099年

每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是: 
(1)*:表示匹配该域的任意值,假如在Minutes域使用*, 即表示每分钟都会触发事件。

(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。 

(3)-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次 

(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次. 

(5),:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。 

(6)L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。 

(7)W: 表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 

(8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。 

(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。

举几个例子: 
0 0 2 1 * ? * 表示在每月的1日的凌晨2点调度任务 
0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业 
0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作


一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。 
按顺序依次为 
秒(0~59) 
分钟(0~59) 
小时(0~23) 
天(月)(0~31,但是你需要考虑你月的天数) 
月(0~11) 
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 
年份(1970-2099)

其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?

0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 
0 0 12 ? * WED 表示每个星期三中午12点 
"0 0 12 * * ?" 每天中午12点触发 
"0 15 10 ? * *" 每天上午10:15触发 
"0 15 10 * * ?" 每天上午10:15触发 
"0 15 10 * * ? *" 每天上午10:15触发 
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发 
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 
"0 15 10 15 * ?" 每月15日上午10:15触发 
"0 15 10 L * ?" 每月最后一日的上午10:15触发 
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发


有些子表达式能包含一些范围或列表

例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

“*”字符代表所有可能的值

因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天


“/”字符用来指定数值的增量 
例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 
在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样


“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 
但是它在两个子表达式里的含义是不同的。 
在天(月)子表达式中,“L”表示一个月的最后一天 
在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT

如果在“L”前有具体的内容,它就具有其他的含义了

例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五 
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

字段 允许值 允许的特殊字符 
秒 0-59 , - * / 
分 0-59 , - * / 
小时 0-23 , - * / 
日期 1-31 , - * ? / L W C 
月份 1-12 或者 JAN-DEC , - * / 
星期 1-7 或者 SUN-SAT , - * ? / L C # 
年(可选) 留空, 1970-2099 , - * /

 

 

2)Cron表达式范例:

                 每隔5秒执行一次:*/5 * * * * ?

                 每隔1分钟执行一次:0 */1 * * * ?

                 每天23点执行一次:0 0 23 * * ?

                 每天凌晨1点执行一次:0 0 1 * * ?

                 每月1号凌晨1点执行一次:0 0 1 1 * ?

                 每月最后一天23点执行一次:0 0 23 L * ?

                 每周星期六凌晨1点实行一次:0 0 1 ? * L

                 在26分、29分、33分执行一次:0 26,29,33 * * * ?

                 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定时任务——Cron表达式详解 的相关文章

  • Python- 文件处理

    os path splitext file 0 获取文件名 file endswith c 用于检查一个文件名 存储在变量 file 中 是否以 c 结尾 如果是这样 那么它可能是一个 C 语言源代码文件 接下来 os path split
  • float类型做比较

    public class tst private float a 3 0f private float b 0 0f private float c 4 0f private float d 0 0f public void floatCo
  • 软件工程专业如何论文选题?

    Ladies and gentlemen 写论文可谓是读书阶段最为关键的一环 你们是否还记得被论文折磨的日日夜夜 最可怕的不是导师催促你时铁青的面容 而是眼看着DDL Deadline 来临 你的论文题目却让你一筹莫展 作为一个硕士毕业没多
  • 下载和编译 Chrome 时遇到的问题

    下载代码前最基本的代理设置 https blog csdn net siyu77 article details 50916320 对于 ShadowSocks 代理 https proxy 也要设置成 http localhost 108
  • QtextBrowser打印数据不能实时显示的问题

    在编写程序的时候需要从外部读取txt文件的数据打印到QtextBrowser文本框中 但是发现数据是卡一下然后一起出来 而不是一行一行地实时显示 编程环境是vs2017编译器下的集合qt插件的C 界面编程 原来的程序段如下 ui datao
  • 每日十道算法

    最近发现了一个挺厉害的人工智能学习网站 内容通俗易懂 风趣幽默 感兴趣的可以点击此链接进行查看 床长人工智能教程 废话不多说 请看正文 1 两个数组的交集 给定两个数组 编写一个函数来计算它们的交集 时间复杂度 O n 空间复杂度 O n
  • sqoop的在hadoop上的安装和使用

    1 解压安装包 tar zxvf sqoop 1 4 6 cdh5 14 2 tar gz 解压文件夹 mv sqoop 1 4 6 cdh5 14 2 soft sqoop146 移动文件夹到文件目录下 cd opt soft sqoop
  • python爬虫遇到 raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool

    python爬虫遇到ssl证书报错 host port 443 Max retries exceeded with url Caused by SSLError SSLCertVerificationError 1 SSL CERTIFIC
  • Lua调用C#的底层原理

    前言 Lua是一种轻量级的脚本语言 被广泛应用于游戏开发 嵌入式系统和其他需要快速开发和灵活性的领域 而C 是一种面向对象的编程语言 是微软开发的 NET平台的一部分 主要用于Windows应用程序开发 对啦 这里有个游戏开发交流小组里面聚
  • 新版nonebot,go-cqhttp搭建qq机器人保姆级教程

    前言 前段时间QQ进行了更新 所以导致了非手表协议扫码登陆报错的问题 不过好在大佬已经推出rc5版本的go cqhttp 解决了这一头疼的问题 在开始之前 我需要说明一下 本文章是针对没有经验和基础的用户 所以说篇幅可能会长一点 开始 1
  • C++栈区、堆区、全局静态区、代码区的介绍

    示例代码 include
  • elasticsearch 配置 之 discovery.zen.ping.unicast.hosts

    discovery zen ping unicast hosts 192 168 1 12 192 168 1 12 9201 192 168 1 12 9202 192 168 1 13 192 168 1 14 注 端口非9200的节点
  • C语言的运算符及优先级

    C语言的运算符包括单目运算符 双目运算符 三目运算符 优先级如下 第1优先级 各种括括号 如 等 成员运算符 第2优先级 所有单目运算符 如 等 第3优先级 算数运算符 乘法运算符 除法运算符 求余运算符 第4优先级 算数运算符 加法运算符
  • githubC++ 技术方向基础知识总结

    简介 面向 C C 技术方向校招求职者 初学者的基础知识总结 包括语言 程序库 数据结构 算法 系统 网络 链接装载库等知识及面试经验 招聘 内推等信息 github 传送门
  • spring学习笔记(十二)Spring注入内部Bean

    Java 中在类内部定义的类称为内部类 同理在 Bean 中定义的 Bean 称为内部 Bean 注入内部 Bean 使用
  • 带你深入了解NPM——NPM初学者指南

    前段时间 我们邀请了我们 城内 葡萄城 资深开发工程师刘涛为大家分享了一次干货满满的关于Electron线上公开课 在课程过程中有不少同学对于NPM的概念和用法有一些疑问 所以这次我们希望通过这篇文章来解答各位同学的问题 另外在介绍的基础上
  • 2021-11-09

    今天是我写博客的第一天 在这里我想先说一说的对于C语言的看法以及我对于我自己的看法 开通这个博客 最主要的是为了记录我对于C语言学习的不断进步过程以及积累过程 我深知想要学好一门一门新的学科是很艰难的 但是我也知道C语言对于现代发展又是及其
  • uniapp 使用echarts

    uniapp 如何使用 echarts 图标 1 引入 文件 主要这三个文件 2 在使用到的页面 注册使用 3 html 结构 ec 对应绑定的是 data 中的 ec 效果图 全部代码
  • STM32 RT-Thread 系统分析(3)-线程管理之线程切换(系统移植基础篇二)

    线程管理之线程切换 前言 基本信息 前言说明 rt hw context switch to 函数 关键代码分析 还原MSP值 复位序列 LDR r0 SCB VTOR LDR r0 r0 startup stm32f103xg S文件内容
  • 面向对象的设计思想

    面向对象的设计思想 OO思想 Object Oriented 1 看到一个需求的时候不应该直接写代码 应该先考虑有哪些类 2 考虑类的时候 类一定是一类事务的描述 不能太局限 3 考虑类的时候需要考虑主要的类 也就是需要和业务 动作 事件紧

随机推荐

  • 编写程序,对输入的一个整数,按相反顺序输出该数。例如,输入为 3578, 输出为 8753。...

    编写程序 对输入的一个整数 按相反顺序输出该数 例如 输入为 3578 输出为 8753 package HomeWork08 import java util Scanner public class HomeWork08 public
  • NIFI使用InvokeHTTP发送http请求

    说明 这里介绍四种平时常用的http请求方法 GET POST PUT DELETE 在官方的介绍文档中关于InvokeHTTP处理器的描述是这么说的 An HTTP client processor which can interact
  • HDU - 1020 Encoding

    Given a string containing only A Z we could encode it using the following method Each sub string containing k same chara
  • IDEA 安装插件IDE Eval Reset

    IDE Eval Reset是什么 idea eval reset是Jetbrains的插件 官方良心产品 会允许我们试用30天 可以借此重新刷新idea正版程序的使用期限 哈哈哈 爽到没朋友 具体操作 1 点击intelliJ IDEA
  • [开源协议]58种开源协议及分类

    转载自 http www opensource org licenses alphabetical 更多关于具体协议内容请看其链接 Licenses that are popular and widely used or with stro
  • Linux、Ubuntu下安装yaml, 关于Import Error: No module named yaml

    pip install pyyaml 如果不行的话 就 conda install yaml 最后 gt gt gt import yaml 没有报错就成功了
  • mingw64镜像网站

    mingw64镜像网站 http files 1f0 de mingw
  • UIBOT的简单使用

    最近项目上使用到一个新的技术软件 刚一阶段使用结束 用来记录下 首先我们了解下UIbot 这里我直接放上下载社区版本的官方地址 来也科技RPA AI智能自动化平台 助力政企实现智能时代的人机协同 首先需要用邮箱注册 然后直接安装社区版本 这
  • 【毕设教程】FCM模糊聚类算法

    文章目录 0 前言 1 如何理解模糊聚类 2 模糊C means聚类算法 3 FCM算法原理 4 Python FCM支持 4 1 安装相关库 4 2 skfuzzy cmeans函数说明 4 3 代码实现 4 4 运行结果 5 FCM算法
  • C++stringstream的简单介绍以及使用

    在C语言中 如果想要将一个整形变量的数据转化为字符串格式可以使用以下两种方式 1 itoa 函数 2sprint 函数 但是两个函数在转化时 都得需要先给出保存结果的空间 那空间要给多大呢 就不太好界定 而且转化格式不匹配时 可能还会得到错
  • matlab打开视频文件并提取颜色数据

    目标 实现加载任意视频文件 并按帧取指定图像区域的某颜色值代表该区域的颜色值 1 加载视频文件 加载视频文件使用函数VideoReader 输入为文件夹路径 返回为一个VideoReader对象 具体使用方法见创建对象以读取视频文件 MAT
  • 离散数学主析取范式及主合取范式

    今天总结了一下关于离散数学化简主析取范式以及主合取范式的一些方法 首先一般可能会用到 分配律 A B C lt gt A B A C A B C lt gt A B A C 其次若化简式里有蕴涵符号 则可以用 蕴涵等值式 A B lt gt
  • 数据清洗、数据挖掘常见十大问题

    数据清洗 数据挖掘常见十大问题 一 数据预处理 数据清洗和特征工程 二 数据预处理和特征工程阶段 最常见的10个问题 1 什么是数据 EDA 2 缺失值的处理方式有哪些 3 如何检测异常数据 如何处理 4 什么是特征工程 有什么作用 5 特
  • 【Spring】数据导出为Excel的接口报java.io.IOException: UT010029: Stream is closed错误

    数据导出为Excel的接口报java io IOException UT010029 Stream is closed错误 实习时导师让写一个平台信息导出为Excel的功能 写完之后发现文件正常导出 但控制台一直报Stream is clo
  • react中使用less和全局样式

    前言 使用create react app脚手架搭建的react项目 会自带css和sass 但是没有less 如果在项目中需要使用less 需要进行下载并进行一些配置 1 配置 1 暴露webpack配置文件 create react a
  • 解决 in ./node_modules/cesium/Source/ThirdParty/zip.js报错

    由于在 node modules cesium Source ThirdParty zip js 文件中使用了 import meta 语法 webpack 默认不支持 在进行项目构建时 会报如下错误 提示信息需要添加 loader 接下来
  • 谷歌浏览器配置微信浏览器_使用Chrome修改user agent模拟微信内置浏览器

    很多时候 我们需要模拟微信内置浏览器 今天教大家用chrome简单模拟 如图设置 F12或者右键审查元素进入开发者模式 点击Emulation 然后点击Network 把Spoof user agent改成Other 并把下面的带复制进去
  • PaddleSpeech调研、安装、使用

    PaddleSpeech概述 PaddleSpeech asr 模块目前只支持中英文的语音自动识别 建议在Linux环境下安装和使用 配置环境要求 gcc gt 4 8 5 paddlepaddle gt 2 4 1 python gt 3
  • 概率论与数理统计

    目录 一 概率论的基本概念 1 1 概率论的直观解释和数学定义 1 2 条件概率与乘法公式 1 3 全概率公式与贝叶斯公式 1 4 事件的独立性 二 随机变量与分布函数 2 1 随机变量与分布函数 2 2 离散型随机变量和常用分布 2 3
  • 定时任务——Cron表达式详解

    Cron表达式是一个字符串 字符串以5或6个空格隔开 分为6或7个域 每一个域代表一个含义 Cron有如下两种语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Secon