热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Cron表达式详细说明

cron表达式一个完整cron表达式如下:{秒}{分钟}{时}{日}{月}{星期}{年}单位取值范围允许的通配符是否必填秒0~59[,-*]是分钟0~59[,-*

cron表达式

一个完整cron表达式如下:

{} {分钟} {} {} {} {星期} {}

单位取值范围允许的通配符是否必填
0~59[, - * /]
分钟0~59[, - * /]
小时0~23[, - * /]
1~31[, - * / ? L W]
1~12 或 JAN-DEC[, - * /]
星期1~7(星期日为1)或 SUN-SAT[, - * / ? L #]
不限[, - * /]

表达式含义

,:在指定字段单位中选择触发定时任务的时间点,如在单位"秒"上写 0,1,3,代表在0、1、3秒都会触发定时任务。

-:在指定字段单位中选择触发定时任务的范围时间,如在单位"秒"上写2-20,代表在2-20秒钟,每秒都会触发一次定时任务。

*:代表每次指定字段单位时间过后都会触发,如:在单位"秒"上写*,代表每秒都会触发一次定时任务。

/:从指定时间开始,每过指定的单位时间都会触发一次,如:在单位"秒"上写20/10,代表从20秒开始,每隔十秒都会执行一次定时任务

?:代表放弃的意思,只能"日"和"星期"使用,必须有一个使用,不能两个字段一起使用,因为"日"和"星期"会有冲突现象,要么设置"星期",要么设置"日"

错误示例:

30 15 23 6 * *

这个表达式是错误的。从表达式上看,代表的是每年的每月的6号每个星期几的23点15分30秒都会执行一次。

"6号"和"每个星期几"冲突了,具体的星期几已经能够确定是当月的哪天了,如:每个月的每个星期一执行一次定时任务
在这里插入图片描述
这里拿2020年的6月举例,很明显当月的每个星期一对应的就是6月1号、6月8号、6月15号、6月22号、6月29号。
因此在选择星期和日期字段时,必须有一方要放弃。

正确示例:

30 15 23 6 * ?

放弃星期字段,代表每年的每月的6号的23点15分30秒都会执行一次。(没指定"年"字段默认为*)

最近10次触发时间(我当前时间为2020-04-22 ):

2020-05-06 23:15:30
2020-06-06 23:15:30
2020-07-06 23:15:30
2020-08-06 23:15:30
2020-09-06 23:15:30
2020-10-06 23:15:30
2020-11-06 23:15:30
2020-12-06 23:15:30
2021-01-06 23:15:30
2021-02-06 23:15:30

正确示例二:

30 15 23 ? * 2

**放弃日期字段,**代表每年的每月的每个星期1(3为星期2,2为星期1,1为星期日,以此类推)的23点15分30秒都会执行一次

最近10次触发时间(我当前时间为2020-04-22 ):

2020-04-27 23:15:30
2020-05-04 23:15:30
2020-05-11 23:15:30
2020-05-18 23:15:30
2020-05-25 23:15:30
2020-06-01 23:15:30
2020-06-08 23:15:30
2020-06-15 23:15:30
2020-06-22 23:15:30
2020-06-29 23:15:30

L:只能在字段"日"和"星期"使用,表示最后的意思(Last),在"日"字段使用,代表这个月的最后一天触发定时任务,在"星期"字段使用,代表这个星期的最后一天触发定时任务

示例:

* * 8 L * ?

表示每年的每个月的最后一天的8点的每分每秒都会执行一次。

W:只在"日"字段上生效,代表离此次日期最近的工作日(周一到周五),例如:2W代表2号最近的工作日

示例:

* * 8 2W * ?

查看日历:

在这里插入图片描述

最近10次执行时间:

2020-05-01 08:01:01
2020-06-02 08:01:01
2020-07-02 08:01:01
2020-08-03 08:01:01
2020-09-02 08:01:01
2020-10-02 08:01:01
2020-11-02 08:01:01
2020-12-02 08:01:01
2021-01-01 08:01:01
2021-02-02 08:01:01

#:**只能出现在星期"字段",**格式为{星期几}#{当月第几周},用于指定当月的第几周的星期几触发定时任务,如:7#1,表示当月的第1周,的星期6(7为星期6,6为星期5,5为星期4,以此类推)触发定时任务

示例:

1 1 8 ? * 7#1

代表每年每个月的第一个星期的星期6的8点1分1秒触发一次定时任务。

最近10次执行时间:

2020-05-02 08:01:01
2020-06-06 08:01:01
2020-07-04 08:01:01
2020-08-01 08:01:01
2020-09-05 08:01:01
2020-10-03 08:01:01
2020-11-07 08:01:01
2020-12-05 08:01:01
2021-01-02 08:01:01
2021-02-06 08:01:01

练习

1,2,3 * 6-10 * * ? *

含义:每月每天的6-10点钟,每分钟的1、2、3秒都会触发一次定时任务

最近10次执行时间:

2020-04-22 17:05:01
2020-04-22 17:05:02
2020-04-22 17:05:03
2020-04-22 17:06:01
2020-04-22 17:06:02
2020-04-22 17:06:03
2020-04-22 17:07:01
2020-04-22 17:07:02
2020-04-22 17:07:03
2020-04-22 17:08:01

30/8 2,3 * * ? *

含义:每月每天的2点、3点中的每分钟的30秒之后,每隔8秒钟执行一次

最近10次执行时间:

2020-04-22 18:02:30
2020-04-22 18:02:38
2020-04-22 18:02:46
2020-04-22 18:02:54
2020-04-22 18:03:30
2020-04-22 18:03:38
2020-04-22 18:03:46
2020-04-22 18:03:54
2020-04-22 19:02:30
2020-04-22 19:02:38

2-10 30 8 1 * ? *

含义:每月的每天的1号8点30分的2-10秒期间,每秒都会执行一次

最近10次执行时间:

2020-05-01 08:30:02
2020-05-01 08:30:03
2020-05-01 08:30:04
2020-05-01 08:30:05
2020-05-01 08:30:06
2020-05-01 08:30:07
2020-05-01 08:30:08
2020-05-01 08:30:09
2020-05-01 08:30:10
2020-06-01 08:30:02

20 30 12 L * ? *

含义:每个月的最后一天的12点30分20秒执行一次

最近10次执行时间:

2020-04-30 12:30:20
2020-05-31 12:30:20
2020-06-30 12:30:20
2020-07-31 12:30:20
2020-08-31 12:30:20
2020-09-30 12:30:20
2020-10-31 12:30:20
2020-11-30 12:30:20
2020-12-31 12:30:20
2021-01-31 12:30:20

1 1 10 3W * ? *

含义:在每个月的3号临近工作日的10点1分1秒执行一次。

最近10次执行时间:

2020-05-04 10:01:01
2020-06-03 10:01:01
2020-07-03 10:01:01
2020-08-03 10:01:01
2020-09-03 10:01:01
2020-10-02 10:01:01
2020-11-03 10:01:01
2020-12-03 10:01:01
2021-01-04 10:01:01
2021-02-03 10:01:01

关于Cron表达式:各位可以来这个网站在线生成Cron表达式:在线生成Cron表达式


推荐阅读
  • 本文详细介绍了如何规划和部署一个高可用的Etcd集群,包括主机配置、软件安装、防火墙设置及集群健康检查等内容。通过合理的硬件配置和网络规划,确保Etcd集群在生产环境中的稳定运行。 ... [详细]
  • 本文深入探讨了 PHP 实现计划任务的方法,包括其原理、具体实现方式以及在不同操作系统中的应用。通过详细示例和代码片段,帮助开发者理解和掌握如何高效地设置和管理定时任务。 ... [详细]
  • 本文探讨了Java中实现定时任务的几种常见方式,包括java.util.Timer、ScheduledExecutorService以及Spring Task,并对每种方法进行了详细的代码示例和优缺点分析。 ... [详细]
  • 本文详细介绍Linux中的cut命令,包括其基本功能、参数使用方法及应用场景。cut命令允许用户从文件中提取特定列或字符,支持多种分隔符。 ... [详细]
  • php写定时器避免内存泄露的方法
    小编给大家分享一下php写定时器避免内存泄露的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大 ... [详细]
  • 探讨在使用OmniSecure Web服务器与phpMyAdmin时遇到的问题,特别是关于HTTP_HOST变量未定义的错误。 ... [详细]
  • Linux Crontab 定时任务管理指南
    本文详细介绍了在Linux系统中如何编辑、查看和删除Crontab定时任务,以及解决定时任务可能遇到的问题。 ... [详细]
  • 腾讯视频 Node.js 服务国庆阅兵直播高并发实战
    本文分享了腾讯视频团队在国庆阅兵直播项目中,如何利用Node.js服务成功应对2.38亿次观看的高并发挑战。文章将从服务架构、可用性保障、缓存策略、日志与告警等方面详细解析。 ... [详细]
  • 本文介绍了如何在 Linux 系统中使用 Cron 进行任务调度,包括查看日志、显示和编辑用户任务列表的方法,以及重启 Cron 服务的具体操作。 ... [详细]
  • 本文将详细介绍如何利用PHP进行实时监控及信息查看,包括PHP版本信息、Linux服务器状态以及客户端请求记录等。 ... [详细]
  • 利用Spring Boot与@Scheduled实现高效定时任务
    本文详细介绍如何在Spring Boot项目中通过@Scheduled注解轻松配置和管理定时任务,同时探讨了多线程处理及Cron表达式的使用。 ... [详细]
  • 本文探讨了如何在系统级别调用通过 virtualenvwrapper 创建的虚拟环境中开发的 Python 脚本,并解决了相关依赖项未安装的问题。 ... [详细]
  • 教程:如何打造令人印象深刻的GitHub个人主页Readme
    本文将指导您如何创建一个既专业又个性化的GitHub个人主页Readme,通过添加统计数据、常用语言和最近活动等元素,让您的主页更加吸引人。 ... [详细]
  • Linux系统中高效解决高Buff/Cache占用问题
    本文详细探讨了在Linux系统中遇到的高Buff/Cache占用问题及其解决方案,提供了手动清除与定时任务自动化处理的方法。 ... [详细]
  • 本文介绍了如何在Spring框架中配置和使用定时任务,包括初始化配置和动态启动定时器的方法。通过示例代码展示了如何利用Spring的TaskScheduler接口来创建和管理定时任务。 ... [详细]
author-avatar
lan1998_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有