一次讲清楚Linux Cron和 Spring Cron

news/2024/12/22 18:24:07/

定时任务是我们日常开发中经常用到的一个功能点,无论是Linux服务器上Crontab还是Spring task schedule,都会使用到cron表达式去实现定时任务的配置。不过,一定要注意,Linux cron表达式和Spring的cron表达式不一样,下面来一次讲清楚。

一,Linux cron表达式

1,长度: 5 位 (中间有一个空格)

2,字段含义和取值

分 时 天 月 周

在以上各个字段中,还可以使用以下特殊字符:

  • "*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
  • "/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
  • "-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
  • ","分散的数字(不一定连续),如1,2,3,4,7,9。
  • cron默认每1分钟扫描一次,全为*即为每分钟一次
  • 月字段还可以为字母L,表示每月最后一天

注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。

3,示例

示例:

每一分钟执行一次command(因cron默认每1分钟扫描一次,因此全为*即可)

*    *    *    *    *  command

每小时的第3和第15分钟执行command

3,15   *    *    *    *  command

每天上午8-11点的第3和15分钟执行command:

3,15  8-11  *  *  *  command

每隔2天的上午8-11点的第3和15分钟执行command:

3,15  8-11  */2  *   *  command

每个星期一的上午8点到11点的第3和第15分钟执行command

3,15  8-11   *   *  1 command

每晚的21:30重启smb

30  21   *   *  *  /etc/init.d/smb restart

每月1、10、22日的4 : 45重启smb

45  4  1,10,22  *  *  /etc/init.d/smb restart

每周六、周日的1 : 10重启smb

10  1  *  *  6,0  /etc/init.d/smb restart

每天18 : 00至23 : 00之间每隔30分钟重启smb

0,30  18-23  *  *  *  /etc/init.d/smb restart

每一小时重启smb

*  */1  *  *  *  /etc/init.d/smb restart

晚上11点到早上7点之间,每隔一小时重启smb

*  23-7/1  *   *   *  /etc/init.d/smb restart

每月的4号与每周一到周三的11点重启smb

0  11  4  *  mon-wed  /etc/init.d/smb restart

每小时执行/etc/cron.hourly目录内的脚本

0  */1   *   *   *  root run-parts /etc/cron.hourly

二,Spring cron表达式

1,长度:6 位 (中间有一个空格)

2,字段含义和取值

秒 分 时 天 月 周 

 注意: 和Linux cron的区别就是多一个秒的配置

  • 字段可能是一个星号*,它表示该字段可以使用的所有范围。对于周或天字段,可以使用问号(?)代替星号

  • ","分散的数字(不一定连续),如1,2,3,4,7,9

  • "-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次

  • "/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。

  • 周字段和月字段可以是英文名(Monday,Friday,May,October这些),取前三个字母,忽略大小写

  • 天字段可以是L,表示月的最后一天; 如果是L-1,表示月的倒数第二天

  • 周字段也可以是L,表示周的最后一天

  • 周字段可以使nL,表示每月最后的周n

  • 天字段可以是nW,表示每个月的第n周

  • 天字段可以是LW,表示每个月的最后的一周

  • 周字段可以是d#n,表示一个月的第n周的第d天

3,示例

0 0 * * * *

每天的零时零分

*/10 * * * * *

每10秒

0 0 8-10 * * *

每天8点,9点,10点

0 0 6,19 * * *

每天6点正和19点正

0 0/30 8-10 * * *

每天8:00, 8:30, 9:00, 9:30, 10:00, 10:30

0 0 9-17 * * MON-FRI

周一到周五的9点到17点

0 0 0 25 DEC ?

圣诞夜零时

0 0 0 L * *

每个月最后一天零时

0 0 0 L-3 * *

每月倒数第4天零时

0 0 0 * * 5L

每月最后的周五零时

0 0 0 * * THUL

每月最后的周四零时

0 0 0 1W * *

每月第一周的零时

0 0 0 LW * *

每月最后一周的零时

0 0 0 ? * 5#2

每个月的第二周的周五的午夜零时

0 0 0 ? * MON#1

每个月的第一个周一的午夜零时

4,注解用法

上面这些示例,都是在注解@Scheduled(cron = "0 0 0 LW * *") 中使用,还有一些快捷的方式,用法如:@Scheduled(cron = "@hourly")

@yearly (or @annually)

0 0 0 1 1 *

@monthly

0 0 0 1 * *

@weekly

0 0 0 * * 0

@daily (or @midnight)

0 0 0 * * *

@hourly

0 0 * * * *

码字不易,记得点赞关注哟


http://www.ppmy.cn/news/1072263.html

相关文章

【SpringBoot】SLF4J: Class path contains multiple SLF4J bindings.

问题描述 SpringBoot整合j2cache,启动时报错。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/xxx/.m2/repository/ch/qos/logback/logback-classic/1.2.5/logback-classic-1.2.5.jar!/org/slf4j/impl/Stati…

<C++> SSE指令集

SSE指令集 include库 #include <mmintrin.h> //MMX #include <xmmintrin.h> //SSE(include mmintrin.h) #include <emmintrin.h> //SSE2(include xmmintrin.h) #include <pmmintrin.h> //SSE3(include emmintrin.h) #include <tmmintrin.h> /…

解读亚马逊云科技语义搜图检索方案

图像检索&#xff08;包括文搜图和图搜图&#xff09;是各个行业中常见的一个应用场景。比如在电商场景中&#xff0c;基于以图搜图做相似商品查找&#xff1b;在云相册场景中&#xff0c;基于文搜图来找寻所需的图像素材。 传统基于标签的图像检索方式&#xff0c;即先使用目标…

Java“牵手”1688商品列表数据,关键词搜索1688商品数据接口,1688API申请指南

1688商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取1688商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问1688商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…

docker 学习-- 04 实践2 (lnpmr环境)

docker 学习 系列文章目录 docker 学习-- 01 基础知识 docker 学习-- 02 常用命令 docker 学习-- 03 环境安装 docker 学习-- 04 实践 1&#xff08;宝塔&#xff09; docker 学习-- 04 实践 2 &#xff08;lnpmr环境&#xff09; 文章目录 docker 学习 系列文章目录1. 配…

R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列...

全文下载链接&#xff1a;http://tecdat.cn/?p25880 本文描述了一个模型&#xff0c;该模型解释了交易的聚集到达&#xff0c;并展示了如何将其应用于比特币交易数据。这是很有趣的&#xff0c;原因很多。例如&#xff0c;对于交易来说&#xff0c;能够预测在短期内是否有更多…

没有 JavaScript 计时器的自动播放轮播 - CSS 动画

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>计时器</title><style>* {padding: 0;margin: 0;box-siz…

如何使用c3p0连接池???

1.首先下载架包。。。&#xff08;下载链接&#xff1a;https://note.youdao.com/ynoteshare/index.html?id61e2cc939390acc9c7e5017907e98044&typenote&_time1693296531722&#xff09; 2.将架包加入项目文件。 创建一个lib目录&#xff0c;将架包复制进去 右键点击l…