配置定时任务的 cron 表达式有哪几种?

配置定时任务的 cron 表达式有哪几种?Cron 表达式是一种用于配置 Cron 任务调度的字符串格式,主要用于 Unix 和 Unix-like 系统的定时任务服务,以及一些其他的任务调度库和服务,如 Quartz、Spring、AWS

Cron 表达式是一种用于配置 Cron 任务调度的字符串格式,主要用于 Unix 和 Unix-like 系统的定时任务服务,以及一些其他的任务调度库和服务,如 Quartz、Spring、AWS CloudWatch 等。不同的系统和库对 Cron 表达式的格式会有微小的差异,但基本概念是一样的,接下来就介绍下几种常见的 Cron 表达式格式。

Unix Cron 表达式

Unix Cron 表达式由5个字段组成,每个字段由空格分隔。每个字段代表一个时间单位,从左到右分别是:

  • 分钟(0 – 59)
  • 小时(0 – 23)
  • 日期(1 – 31)
  • 月份(1 – 12)
  • 星期几(0 – 7,其中0和7都表示周日)

每个字段可以包含一个或多个值,以及一些特殊字符:

  • 星号 (*) 表示该字段的所有可能值。例如,小时字段的 * 表示 “每个小时”。
  • 逗号 (,) 用于列出多个值。例如,星期几字段的 “1,3,5” 表示 “周一,周三,和周五”。
  • 连字符 (-) 用于表示一个范围。例如,日期字段的 “1-15” 表示 “月初到月中”。
  • 斜线 (/) 用于表示步进值。例如,分钟字段的 “*/15” 表示 “每15分钟”。

看几个例子:

  • 0 0 * * *:每天零点执行任务。
  • 30 2 * * 1:每周一的凌晨 2:30 执行任务。
  • 0 12 1 * *:每个月的第一天中午 12 点执行任务。
  • */5 * * * *:每 5 分钟执行一次任务。

Quartz Cron 表达式

Quartz 是 Java 环境中被广泛使用的任务调度库,但是 Cron 表达式与 Unix 系统的 Cron 表达式有一些不同。Quartz 的 Cron 表达式由七个字段组成,每个字段由空格分隔。每个字段代表一个时间单位,从左到右分别是:

  1. 秒(0 – 59)
  2. 分钟(0 – 59)
  3. 小时(0 – 23)
  4. 日期(1 – 31)
  5. 月份(1 – 12 或 JAN-DEC)
  6. 星期几(1 – 7 或 SUN-SAT,其中1和7都表示周日)
  7. 年份(空,1970-2099)

每个字段可以包含一个或多个值,以及一些特殊字符:

  • 星号 (*) 表示该字段的所有可能值。例如,小时字段的 * 表示 “每个小时”。
  • 逗号 (,) 用于列出多个值。例如,星期几字段的 “MON,WED,FRI” 表示 “周一,周三,和周五”。
  • 连字符 (-) 用于表示一个范围。例如,日期字段的 “1-15” 表示 “月初到月中”。
  • 斜线 (/) 用于表示步进值。例如,分钟字段的 “0/15” 表示 “每15分钟”。
  • 问号 (?) 只能用在日期和星期几字段,表示 “不指定值”。这是因为日期和星期几是有冲突的(例如,”第三个星期五” 和 “20日” 可能不是同一天),在这两个字段中必须有一个使用 ?。
  • L 字符可以在日期和星期几字段中使用,表示 “最后”。在日期字段中,表示这个月的最后一天;在星期几字段中,表示这个月的最后一个星期几(例如,”6L” 表示 “最后一个星期五”)。
  • W 字符只能在日期字段中使用,表示 “工作日”。例如,”15W” 表示 “离这个月的15日最近的工作日”。
  • 字符只能在星期几字段中使用,表示 “第几个”。例如,”FRI#2” 表示 “这个月的第二个星期五”。

看几个例子:

  • 0 0 12 * * ?:每天中午 12 点执行任务。
  • 0 15 10 ? * MON-FRI:周一到周五的上午 10:15 执行任务。
  • 0 0 12 ? * WED:每周三的中午 12 点执行任务。
  • 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 期间,每分钟执行一次任务。

Spring Cron 表达式

Spring Framework 使用 Quartz 作为调度引擎,因此 Spring 的 Cron 表达式基本上遵循了 Quartz 的 Cron 表达式语法,但有一些小的差异。

  • 两者对周的某天的处理略有不同。在 Spring 中,周的某天是从 0 开始的(0 代表星期日),而在 Quartz 中,是从 1 开始的(1 代表星期日)。
  • Spring 不支持 Quartz 的一些特殊字符,如问号 (?)、L、W 和 #。

AWS CloudWatch Cron 表达式

AWS CloudWatch 使用的 Cron 表达式与 Unix 或 Quartz Cron 表达式稍有不同。CloudWatch 的 Cron 表达式由六个必需字段组成,还有一个可选字段。这些字段以空格分隔,从左到右分别代表:

  1. 分钟(0 – 59)
  2. 小时(0 – 23)
  3. 日期(1 – 31)
  4. 月份(1 – 12 或 JAN-DEC)
  5. 星期几(1 – 7 或 SUN-SAT,其中1表示周日,7表示周六)
  6. 年份(1970 – 2199)
  7. 时区(可选)

和其他 Cron 表达式一样,CloudWatch Cron 表达式也支持一些特殊字符:

  • 星号 (*) 表示该字段的所有可能值。例如,月份字段的 * 表示 “每个月”。
  • 逗号 (,) 用于列出多个值。例如,星期几字段的 “1,5” 表示 “周日和周四”。
  • 连字符 (-) 用于表示一个范围。例如,日期字段的 “1-15” 表示 “月初到月中”。
  • 斜线 (/) 用于表示步进值。例如,小时字段的 “0/2” 表示 “每两个小时”。

看几个例子:

  • 0 12 * * ? *:每天中午 12 点触发事件。
  • 15 10 ? * MON-FRI *:在工作日的上午 10:15 触发事件。
  • 0 12 ? * WED *:每周三的中午 12 点触发事件。
  • 0/15 * ? * * *:每 15 分钟触发一次事件。
  • 0 14,18 ? * * *:在每天的下午 2 点和 6 点触发事件。

注意,CloudWatch Cron 表达式中的星期几字段和日期字段不能同时指定。如果你试图同时指定这两个字段,事件可能不会按照预期进行触发。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/36694.html

(0)
上一篇 2023-11-15
下一篇 2023-11-15

相关推荐

  • 【数组、双指针】day3_15. 三数之和

    【数组、双指针】day3_15. 三数之和给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums

    2023-11-13
    159
  • mysql四种常见日志_Redis日志

    mysql四种常见日志_Redis日志日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详…

    2023-04-02
    149
  • 数据类型相关以及堆栈知识

    数据类型相关以及堆栈知识两大数据类型 基本数据类型:number\string\boolean\null\undefined\symbol\bigint 引用数据类型:object\function 类型判断方法 typeo

    2023-11-16
    139
  • 提交六次的代码——LeetCode学习笔记1

    提交六次的代码——LeetCode学习笔记1嘿!这里是正在学习编程的CH。最近在网上搜索有关LeetCode的题目解答,发现解答并不多,于是也来做一个。这是第一篇文章,希望大家喜欢!初来乍

    2022-12-14
    160
  • MySQL – 事务(Transaction)详解

    MySQL – 事务(Transaction)详解一、事务(Transaction)定义事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务。●一个完整的业务需要批量的DML(in

    2023-04-01
    172
  • 深度卷积神经网络案例研究

    深度卷积神经网络案例研究在深度学习快速发展的时代,各种创新型的神经网络架构层出不穷。要想跟着时代的发展,对于这些案例的研究是很有必要的。本篇博客将基于Andrew Ng教授的深度学习专项课程第四门课程的第二周内容来针对卷积神

    2023-11-17
    146
  • 数据库两大神器【索引和锁】[通俗易懂]

    数据库两大神器【索引和锁】[通俗易懂]索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度。 索引需要占物理和数据空间。 为什么说索引会降低插入、删除、修改等维护任务的速…

    2023-04-03
    148
  • 代码重构的前提_代码重构pdf

    代码重构的前提_代码重构pdf书名:《重构:改善既有代码的设计》作者:Martin Fowler译者:熊节https://book.douban.com/subject/30

    2022-12-14
    151

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注