首页 > 其他分享 >Cron表达式-任务调度

Cron表达式-任务调度

时间:2024-05-14 14:57:16浏览次数:23  
标签:cron 执行 Cron 字段 使用 任务调度 表达式

当我们谈论任务调度时,cron(Cron表达式)是一种非常常见和常用的方式。它是一种用于在特定时间间隔内定期执行任务的调度表达式。cron表达式由6个字段组成,分别代表分钟、小时、日期、月份、星期几和要执行的命令或脚本。

下面是cron表达式的每个字段的含义:
0 9 * * * command

  1. 分钟(0-59):表示每小时的第几分钟执行任务。
  2. 小时(0-23):表示每天的第几个小时执行任务。
  3. 日期(1-31):表示每月的第几天执行任务。
  4. 月份(1-12):表示每年的第几个月执行任务。
  5. 星期几(0-7,其中0和7都表示星期日):表示每周的第几天执行任务。
  6. 命令或脚本:表示要执行的命令或脚本。

举个例子,如果我们想要在每天的上午9点执行一个脚本,我们可以使用以下的cron表达式:
0 9 * * * command
这个表达式的含义是:在每天的第0分钟(即整点)的第9小时执行任务。
另一个例子,如果我们想要在每周一的下午2点执行一个命令,我们可以使用以下的cron表达式:
0 14 * * 1 command
这个表达式的含义是:在每天的第0分钟(即整点)的第14小时执行任务,并且只在星期一执行。

使用cron表达式可以实现非常精确的任务调度,可以根据自己的需求设定任务的执行时间。在使用cron表达式时,需要注意的是,cron表达式的语法是固定的,每个字段之间使用空格分隔,不同字段之间的取值范围也是固定的。

进阶

当然!除了基本的cron表达式语法,还有一些进阶的用法和技巧可以帮助你更好地使用cron任务调度。

  1. 通配符和范围:在cron表达式中,你可以使用通配符()来表示一个字段的所有可能取值。例如,如果你想要在每小时的所有分钟执行任务,你可以使用来表示分钟字段。另外,你也可以使用范围(例如1-5)来指定字段的取值范围。

  2. 递增值:除了通配符和范围,你还可以使用递增值(/)来指定字段的间隔。例如,如果你想要每隔5分钟执行一次任务,你可以使用*/5来表示分钟字段。

  3. 列表和逗号:你可以使用逗号(,)来指定一个字段的多个取值。例如,如果你想要在每天的上午9点和下午2点执行任务,你可以使用0 9,14 * * * command来表示小时字段。

  4. 特殊字符:cron表达式中还有一些特殊字符可以帮助你更灵活地定义任务调度。例如,你可以使用?来表示不关心的字段,使用L来表示某个字段的最后一个取值,使用W来表示最近的工作日,使用#来表示某个月份的第几个星期几。

  5. 时间段和时间间隔:除了单个字段的取值,你还可以使用时间段(例如9-17)和时间间隔(例如0/5)来指定多个字段的取值。例如,如果你想要在每天的工作时间(上午9点到下午5点)每隔10分钟执行一次任务,你可以使用0 9-17/10 * * * command来表示。

基于频率的间隔

cron表达式受限:
cron表达式的一个重要限制是它们不能表示某些基于频率的调度。例如,如何定义每三天运
行一次DAG的cron表达式?
timedelta 模块
要使用这样一个基于频率的调度,可以传递一个
timedelta实例(来自标准库中的datetime模块)作为调度间隔。

dag = DAG( 
dag_id=“04_time_delta”, 
schedule_interval=dt.timedelta(days=3), 
start_date=dt.datetime(year=2019,month=1, 
day=1),end_date=dt.datetime(year=2019,month=1, 
day=5), 
# timedelta给出了使用基于频率的调度的能力。 
)

标签:cron,执行,Cron,字段,使用,任务调度,表达式
From: https://www.cnblogs.com/babyfengfjx/p/18191317

相关文章

  • SpringMVC中JSP页面不显示EL表达式的原因
    感谢 https://developer.aliyun.com/article/444366 在SpringMVC的入门项目中,这是最常见的问题。实际上这是因为使用了JSP1.2规范引起的。1.使用JSP1.2定义格式如果您使用了 老旧的JSP1.2描述方式,即使用了DTD定义:web.xml<!DOCTYPEweb-appPUBLIC"-......
  • ysyx:BNF表达式
    BNF表达式以前没有学过,ysyx的nemu项目里用到了,在这里整理一下学习笔记。 BNF表达式可以简洁地定义一种语言的格式,基本格式为:<non-terminal>::=<replacement> 。non-terminal为”非终止符号“,replacement为代替物,可以用于诠释左边的内容。举个例子:<句子>::=<主语><谓语......
  • (转载)数据结构-02 中缀表达式转后缀表达式并计算值
    1.图解中缀表达式转后缀表达式通过 数据结构-01-图解后缀表达式值计算方式 我们了解到后缀表达式(例如:931-3*+102/+)对计算机运算的方便,但是它却让我们这些人类十分的难受,因此我们需要在设计一个,中缀表达式转后缀表达式的程序来一劳永逸. 规则:依次遍历表达式,1.如......
  • (转载)数据结构-01-图解后缀表达式值计算方式
    目录:数据结构-01-图解后缀表达式值计算方式数据结构-02图解中缀表达式转后缀表达式并计算值1.简介问题:我们平常使用的数学表达式大多数是“中缀表达式”例如:9+(3-1)×3+10÷2,对人比较友好,但是这个对计算机计算并不友好,因为计算机无法智能判断运算顺序的问题(比如说乘法加......
  • 运算符与表达式
    运算符与表达式Created:November29,202310:38PM运算符运算符释义+、-、*、/略**、//、%乘方、整除(向下取整至最接近的整数、余数<<、>>指的是二进制左右移&按位与按位与是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进......
  • 了解GaussDB SQL中CASE表达式
    本文分享自华为云社区《GaussDBSQL基本语法示例-CASE表达式》,作者:Gauss松鼠会小助手2。一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。二、CA......
  • 使用Lambda表达式和接口的简单Java 8 Predicate示例
    大量的Java编程涉及到对真或假值的评估,从条件语句到迭代循环。当您使用JDK的StreamsAPI和Lambda函数时,可以使用备受欢迎的JavaPredicate接口来简化布尔条件的评估。也被称为Java8Predicate(源自引入函数式编程的JDK版本),这个简单的接口定义了五个方法,尽管只有JavaPredicate的t......
  • 在Linux中,如何使用cron进行任务调度?
    Cron是Linux系统中用于任务调度的一个强大工具,它允许用户安排命令或脚本在特定的时间周期性地自动执行,无需用户干预。Cron作业可以按分钟、小时、日期、月份、星期几来设置执行时间。以下是使用cron进行任务调度的基本步骤:1.编辑Crontab文件Crontab(crontable)文件包含了所有计......
  • 使用c#强大的表达式树实现对象的深克隆
    一、表达式树的基本概念表达式树是一个以树状结构表示的表达式,其中每个节点都代表表达式的一部分。例如,一个算术表达式a+b可以被表示为一个树,其中根节点是加法运算符,它的两个子节点分别是a和b。在LINQ(语言集成查询)中,表达式树使得能够将C#中的查询转换成其他形式的查询,......
  • 速度围观|使用分布式企业级任务调度平台,到底有多香?
    任务调度平台是关键的软件基础设施,专门设计用于自动化、高效和可靠地安排及执行预定的后台任务。谷歌云首席决策工程师KasimKhan曾提到:“在云计算环境中,自动化和效率是关键。”任务调度平台通过优化资源使用和集中管理功能,提供了一系列强大的调度策略、执行管理、监控报警和开发......