定时任务中的cron表达式

2023-11-09

cron 表达式的定义

虽然之前用过 cron 表达式 ,但对其表达式的含义只是粗略了解,恰逢最近需要使用,经查询资料,对其进行详细的记录,方便以后查找学习。

cron 表达式时间域的定义

cron 表达式 是一个字符串,该字符串由 5或7个时间域组成(每种系统或软件不一样),时间域之间通过空格进行分隔。cron 表达式格式如下所示:

 [] [] [] [] [] [] []

cron 表达式 “年” 的部分可以省略,实际常用的由前六部分组成。在Debian系统中,cron表达式没有时间域,它的最小单位是分钟,所以正常来说是没办法执行秒级的任务!注释以注释标记#开始,并且必须单独在一行上。
cron表达式每部分时间域的定义如下所示:

时间域 值及范围 适用通配符 是否必填
0-59 , - * /
0-59 , - * /
0-23 , - * /
1-31 , - * ? / L W
1-12 或 JAN-DEC , - * /
1-7 或 SUN-SAT , - * ? / L #
1970-2099 , - * /

cron 表达式中的通配符

通配符 通配符表示的意义
, 表示的是在两个以上的时间点中都执行,例如在 “分” 这个域中定义为 1, 3,5 ,则表示分别在第 1分,第 3分 第 5分执行该定时任务。
- 表示在某个域的连续范围,例如在 “时” 这个域中定义 7-10,则表示在7 到10 时之间每小时都触发一次,用 , 表示 7,8,9,10
* 表示所有值,可解读为 “每”。例如在“日”这个域中设置 *,表示每一天都会触发。
/ 表示在某个域上周期性触发,该符号将其所在域中的表达式分为两个部分,其中第一部分是起始值,在 例如表达式 0 5/10 0 * * ?“分” 上则表示从每天凌晨00:05:00开始, 每10分钟执行一次。
? 表示不指定值,不需要关心当前设置这个字段的值。例如:要在每天凌晨1时触发一个操作,可以设置为 0 0 1 * * ?
L 表示英文中的LAST的意思,只能在 “日”和“周”中使用。在“日”中设置,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年), 在“周”上表示周六,相当于”7”或”SAT”。如果在”L”前加上数字,则表示该数据的最后一个。例如 0 0 0 ? * 7L在“周”中设置”7L”这样的格式,则表示“在每个月最后一个周六执行定时任务”
W 表示离指定日期的最近那个工作日(周一至周五)触发,只能在 “日” 中使用且只能用在具体的数字之后。若在“日”上设置”2W”,表示离每月2号最近的那个工作日触发。假如 2号正好是周六,则找最近的周五(1号)触发, 如果 2号是周未,则找最近的下周一(3 号)触发.如果2号正好在工作日(周一至周五),则就在该天触发。如果是 “1W” 就只能往本月的下一个最近的工作日推不能跨月往上一个月推
# 表示每月的第几个周几,只能作用于 “周” 。例如 ”2#3” 表示在每月的第三个周一,周日为1而非周一为1

常用cron表达式示例

  • 0/2 * * * * ? 表示每2秒 执行一次定时任务
  • 0 0/2 * * * ? 表示每2分钟 执行一次定时任务
  • 0 0 2 1 * ? 表示在每月的1日的凌晨2点执行一次定时任务
  • 0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行一次定时任务
  • 0 15 10 ? * 6L 2021-2023 表示2021-2023年每个月的最后一个星期五上午10:15执行一次定时任务
  • 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 执行一次定时任务
  • 0 0 1 1 * ?每月 1 号凌晨 1 点执行一次定时任务

在日常工作中,可以借用一些可视化的在线工具来生成 cron 表达式,
https://tool.lu/crontab
https://cron.qqe2.com/
https://www.bejson.com/othertools/cron/
https://www.bejson.com/othertools/cronvalidate/
但还是有必要了解cron表达式的相关含义。

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

定时任务中的cron表达式 的相关文章

随机推荐

  • JAVA 练习题(2)

    从键盘输入8个整数存放在一个数组中 然后将奇数和偶数分别存入到两个不同的数组中 并按奇数 偶数交替的顺序输出这两个数组中的所有数据 先交替输出 如果奇数个数多 则再输出剩下的奇数 如果偶数个数多 则再输出剩下的偶数 提示与要求 1 定义一个
  • 动手学区块链学习笔记(一):加密算法介绍

    引言 本文根据实验楼以及自己查询到的一些资料 文末给出 模拟了一下区块链从诞生到交易的整个过程 也算是弥补了一下之前区块链的一些缺失知识 哈希加密原理介绍 什么是比特币 比特币是一种加密货币 也是一种分布式数字货币 它的创建者使用匿名身份被
  • [VS] 诊断工具,CPU调优

    工具 vs2019 系统 win10 语言 C github 调试 demo dangwei 90 ProcessOptimize github com 本文主要通过 VS 自带的诊断工具 对程序进行CPU调优 Begin 1 编译测试 d
  • Acwing 1227. 分巧克力

    每个巧克力能切多少块是可以计算出来的 假设当前巧克力的边长是Wi Hi的话 若要切出边长是x的巧克力的话 能切的块数为 Wi x Hi x int默认下取整 对于每一块巧克力来说 切出来的数量随着边长的增加而递减的 我们要找到一个块数满足
  • 利用遗传算法GA和粒子群算法PSO优化算法,将BP神经网络训练集的MSE作为适应度函数

    利用遗传算法GA和粒子群算法PSO优化算法 将BP神经网络训练集的MSE作为适应度函数 获取最优的权值和阈值在反向输入到BP神经网络里构建回归预测模型 同时能够打印出模型的多个评价指标 具体效果可以看图 ID 325066919444354
  • Pycharm在导入虚拟环境变量的时候报错:Please specify a different SDK name解决方法

    发生的错误的远影是因为虚拟环境的命名有重复 是因为你重复导入同一个虚拟环境所致 解决方法 在设置的Project Interpreter中选择你所需要的虚拟环境 在下拉框中选择Show All 然后你就可以看到你的所有虚拟环境 点击 删除名
  • 初级项目——记账系统、双色球

    一 记账系统 主功能 展示收支明细 登记收入 登记支出 退出系统 package com wfl test import java util Scanner author wfl Version 1 0 date 2022 5 17 17
  • Linux网络-数据链路层,MAC帧解析,ARP协议

    目录 数据链路层VS网络层 以太网概念 以太网的帧格式 报文格式 也可以称之为MAC帧 MAC地址的概念 MAC帧格式 局域网通信原理 MTU MTU说明 MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ARP协
  • 使窗口只第一次访问时弹出

    有时为了某种需要 要求进入一个页面时弹出一个窗口 但每次进入时都会弹出 就使人感受到烦 怎样实只弹出一次呢 下面的程序将实现浏览才第一次访问这页时弹出窗口 以后再进入则不会弹出 在 之间加入下列代码
  • ILRuntime来实现热更新的优与劣!

    热更新 Q1 使用ILRuntime来实现热更新的可行度有多高 大家有没有使用经验分享 一般热更新分两块 代码 资源 资源热更几乎都是通过AssetBundle来搞 代码热更可以用某种解释器 解释执行的语言来搞 可供选择的有Lua as3
  • 发现一个hibernate针对derby数据库的问题bug,及解决办法

    最近apache软件基金会 发布了derby10 7 由于derby到10 7版本才支持boolean数据类型 今天发现一个hibernate针对derby数据库的一个bug 特意把它贴出来 以提醒他人 2011 01 01发现的hiber
  • qwt之获取动态变化x轴和y轴坐标的最大值和最小值

    一 新建工程 将qwt基本画图功能配置完毕 开始进行页面布局 如图所示 二 在值变化按钮中 可以实现每次进行点击x轴的时候 都会获取动态的x轴的最大值和最小值 进行点击转到槽之后x轴部分加入以下代码 void Widget on pushB
  • Basic Level 1093 字符串A+B (20分)

    题目 给定两个字符串 A 和 B 本题要求你输出 A B 即两个字符串的并集 要求先输出 A 再输出 B 但重复的字符必须被剔除 输入格式 输入在两行中分别给出 A 和 B 均为长度不超过 1 0 6 10 6 106的 由可见 ASCII
  • 利用DDA、中点画线和Bresenham法画直线

    一 实验目的 在空白图像上绘制两个点 坐标分别为 24 26 和 140 624 并且绘制出以该点为端点的直线 要求利用DDA 中点直线及Bresenham算法进行绘制 二 设计方案 使用DDA 中点画线和Bresenham画线法绘制直线
  • VideoCapture.get()(python)

    param define cv2 VideoCapture get 0 视频文件的当前位置 播放 以毫秒为单位 cv2 VideoCapture get 1 基于以0开始的被捕获或解码的帧索引 cv2 VideoCapture get 2
  • 机器学习分类算法(六)-随机森林算法

    集成算法 集成学习 ensemble learning 是目前非常流行的机器学习策略 基本上所有问题都可以借用其思想来得到效果上的提升 基本出发点就是把算法和各种策略集中在一起 说白了就是一个搞不定大家一起上 集成学习既可以用于分类问题 也
  • 多线程之线程同步

    多线程内容大致分两部分 其一是异步操作 可通过专用 线程池 Task Parallel PLINQ等 而这里又涉及工作线程与IO线程 其二是线程同步问题 鄙人现在学习与探究的是线程同步问题 通过学习 CLR via C 里面的内容 对线程同
  • leetcode 200. 岛屿数量——java题解

    题目所属分类 flood fill 算法 dfs算法经典 原题链接 给你一个由 1 陆地 和 0 水 组成的的二维网格 请你计算网格中岛屿的数量 岛屿总是被水包围 并且每座岛屿只能由水平方向和 或竖直方向上相邻的陆地连接形成 此外 你可以假
  • java运行jar文件中某个类

    size medium 运行jar文件的方法是 1 java jar xxx jar 但是有时 我们希望运行里面的具体某个类 这时可以通过 1 java cp xxx jar xxx com xxxx 其中 cp命令是将xxx jar加入到
  • 定时任务中的cron表达式

    目录 cron 表达式的定义 cron 表达式时间域的定义 cron 表达式中的通配符 常用cron表达式示例 cron 表达式的定义 虽然之前用过 cron 表达式 但对其表达式的含义只是粗略了解 恰逢最近需要使用 经查询资料 对其进行详