CRON表达式是一个字符串,包含五个到七个由空格分隔的字段(每种软件不一样),表示一组时间,通常作为执行某个程序的时间表。

  1. 调度精度: Linux的cron调度精度为分钟级别,最小粒度为分钟,而Java中的Quartz框架可以支持秒级别的调用。
  2. 灵活性: Quartz框架提供了丰富的调度功能,可以支持一些复杂的调度需求,比如支持日历调度、集群调度等功能,而Linux的cron相对简单,只能支持基本的时间调度。
  3. 可视化管理: Quarz框架提供了可视化的管理界面,可以方便地查看和管理定时任务,而Linux的cron需要通过命令行来管理定时任务,相对不够直观。

Linux

分  时  日  月  周
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- minute (0 - 59)

以上字段详解

字段 是否必填 允许值 允许特殊字符
Minutes 0–59 *,-
Hours 0–23 *,-
Day of month 1–31 *,-?LW
Month 1–12 or JAN–DEC *,-
Day of week 0–7 or SUN–SAT *,-?L#
Year 1970–2099 *,-

Java

秒  分  时  日  月  周
* * * * * *
- - - - - -
| | | | | |
| | | | | +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | | +--------------- day of month (1 - 31)
| | +-------------------- hour (0 - 23)
| +------------------------- min (0 - 59)
+------------------------------ second (0 - 59)

以上字段详解

字段 是否必填 允许值 允许的特殊字符
秒(Seconds) 0~59的整数 , - * / 四个字符
分(Minutes) 0~59的整数 , - * / 四个字符
小时(Hours) 0~23的整数 , - * / 四个字符
日期(DayofMonth) 1~31的整数(但是你需要考虑你月的天数) ,- * ? / L W C 八个字符
月份(Month) 1~12的整数或者 JAN-DEC , - * / 四个字符
星期(DayofWeek) 1~7的整数或者 SUN-SAT (1=SUN) , - * ? / L C # 八个字符
年(Year) 1970~2099 , - * / 四个字符

字符说明

特殊字符 含义
* 表示匹配该域的任意值。假如在Minutes域使用*, 即表示每分钟都会触发事件
? 只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样
- 表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
/ 表示起始时间开始触发,然后每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次
, 表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次
L 表示最后,只能出现在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味着在最后的一个星期四触发
W 表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份
LW 这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五
# 用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三

Q:CRON表达式,Linux和Java的不同写法的更多相关文章

  1. Quartz cron 表达式(linux 定时器,java 定时任务,spring task定时任务)

    原文地址:https://blog.csdn.net/feng27156/article/details/39293403 Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但 ...

  2. Java EE学习——Quartz的Cron表达式

    经历过低谷后,还是要好好学习,越失落会越来越落后. 今天写一下Cron表达式的用法,虽然是之前自己写的,也过了挺长一段时间,这次就拿出来作为回顾吧. Cron表达式是Quartz的精髓(个人觉得),比 ...

  3. Java Spring cron表达式使用详解

    Java Spring cron表达式使用详解   By:授客 QQ:1033553122 语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek ...

  4. (转)Java任务调度框架Quartz入门教程指南(四)Quartz任务调度框架之触发器精讲SimpleTrigger和CronTrigger、最详细的Cron表达式范例

    http://blog.csdn.net/zixiao217/article/details/53075009 Quartz的主要接口类是Schedule.Job.Trigger,而触发器Trigge ...

  5. Linux - cron - cron 表达式

    概述 之前 cron 的补充 这次介绍下 表达式 背景 之前有说过 cron 这次说下 表达式 1. 准备 环境 os centos7 2. 模板文件 文件 位置 /etc/crontab 作用 系统 ...

  6. QuartZ Cron表达式在java定时框架中的应用

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronT ...

  7. JAVA Schedule的Cron表达式

    spring中用到的定时任务,一般用到的有Timer()和Schedule Cron表达式一般是程序的定时任务中所要起的..我们用的springboot中的@Schedule中,启动类中添加enabl ...

  8. java生成cron表达式

    bean类: package com.cst.klocwork.service.cron; public class TaskScheduleModel { /** * 所选作业类型: * 1 -&g ...

  9. Quartz学习-- quartz基本介绍和 Cron表达式

    Quartz学习 一. Quartz 大致简介 Quartz 是完全由 java 开发的一个开源的任务日程管理系统 ​任务日程管理系统 换句话说就是: ​ 一个预先确定的日程时间到达时,负责执行任务的 ...

  10. cron,linux定时脚本

    Linux的cron和crontab Cron定时执行工具详解 Linux下的crontab定时执行任务命令详解 Linux上启动Cron任务 [linux]解析crontab cron表达式详解 c ...

随机推荐

  1. 设计一个基于 LSTM 神经网络的文本分类器

    前一篇:<用于自然语言处理的循环神经网络RNN> 序言:本节主要讲解如何使用循环神经网络(RNN)创建一个文本分类器.RNN 是一类适合处理序列数据的神经网络的统称,而我们将在本节中使用 ...

  2. [笔记]博弈论 & SG 函数

    一直没学结果今天被创了. 一些定义: \(\text{mex}\{S\}\):集合 \(S\) 中最小的没有出现过的非负整数. \(\oplus\):按位异或.也叫做 \(\text{xor}\). ...

  3. 金仓数据库数据迁移实战:从MySQL到KES的顺利迁移

    今天我们将开始实践金仓数据库的数据迁移功能.在此之前,我们一直使用的是简化版的 Docker 镜像,这个版本并没有集成可视化操作工具.因此,为了更方便地进行后续的操作,我们需要额外下载一个 Windo ...

  4. Astro Zen Blog |一个优雅、极简、强大的博客

    介绍 Astro Zen 博客项目 如果你想部署一个自己的静态博客,又不想到处折腾,并且是熟悉的前端技术栈,你可以尝试下:Astro Zen Blog! Astro Zen Blog 是一个使用 As ...

  5. .Net知识技能大全

    .Net知识技能大全 更多请见https://www.dotnetshare.com C#常见运算符 一元运算符(+.-.!.~.++.--) 算术运算符(*./.%.+. – ) 移位运算符(< ...

  6. 在 VS Code 中可以免费使用 GitHub Copilot了!

    今天,有一个重大的好消息要分享给大家: 从现在开始,我们可以在 Visual Studio Code 中,免费使用强大的 GitHub Copilot 进行开发啦! 每个人都可以享受到 AI 加持下的 ...

  7. 使用Java将视频中某一帧抽取为封面图片

    由于业务需求需将视频中的某帧进行截取作为该视频封面,网上太多教程过于复杂麻烦,经本人研究发现可以使用Java调用FFmpeg来进行处理. /** * 获取指定的视频文件后进行封面截图为png并保存到指 ...

  8. library initialization failed - unable to allocate file descriptor table - out of memoryAborte

    问题描述: 使用Docker run container 的时候, 容器在启动几秒后自动退出 , 或者不退出,但里面的服务无法启动成功. 此例的服务是用 java -jar 来启动一个服务. 使用 d ...

  9. HarmonyOS Next 入门实战 - 关系型数据库、smartdb

    SQLite数据库 HarmonyOS的关系型数据库基于SQLite 导入模块 import { relationalStore } from '@kit.ArkData'; 实现步骤: 获取RdbS ...

  10. 在Asp.netCore中使用Attribute来描述限流

    前言 同事问我Asp.netCore的RateLimiting是怎么使用的,我回答说很简单的,你只要按照如下步骤来: 在RateLimiterOptions上注册policy,记住policy对应的p ...