当前位置: 首页 > news >正文

Cron表达式

前言

在日常开发工作中,定时任务是一个非常常见的需求。无论是数据同步、报表生成,还是系统维护,都需要用到定时任务调度。而Cron表达式作为定时任务调度的核心配置语法,是每个开发者都必须掌握的技能。本文将从基础语法出发,带你全面掌握Cron表达式的使用。


一、Cron表达式基础解析

1.1 什么是Cron表达式

Cron表达式是一种用于配置定时任务的字符串表达式,最初诞生于Unix系统,现已广泛应用于各种调度框架中(如Spring Task、Quartz等)。它通过简洁的语法描述复杂的时间规则。

1.2 字段定义

标准的Cron表达式由6个或7个时间字段组成,字段之间用空格分隔:

秒 分 时 日 月 周 [年]
字段取值范围允许的特殊字符必填
0-59, - * /
0-59, - * /
0-23, - * /
1-31, - * / ? L W
1-12 或 JAN-DEC, - * /
1-7 或 SUN-SAT, - * / ? L #
1970-2099, - * /

注意:“日"和"周"字段互斥,必须有一个使用”?"占位符。

1.3 特殊字符详解

字符含义示例说明
*所有值* * * * *每秒执行
,列表值1,3,5 * * * *第1、3、5秒执行
-范围值1-5 * * * *第1到第5秒执行
/间隔值0/5 * * * *每5秒执行(从第0秒开始)
?不指定值0 0 12 * * ?每天12点执行(不指定周几)
L最后0 0 12 L * ?每月最后一天12点执行
W最近工作日0 0 12 15W * ?每月15日最近工作日12点执行
#第几个0 0 12 ? * 5#2每月第2个周五12点执行

二、项目常用Cron示例集

下面整理了30+个企业级项目中常用的Cron表达式,按场景分类:

2.1 按频率执行

# 每5秒执行一次 0/5 * * * * ? # 每30秒执行一次 0/30 * * * * ? # 每分钟执行一次 0 * * * * ? # 每5分钟执行一次 0 */5 * * * ? # 每15分钟执行一次 0 */15 * * * ? # 每30分钟执行一次 0 */30 * * * ? # 每小时执行一次 0 0 * * * ? # 每2小时执行一次 0 0 */2 * * ? # 每6小时执行一次 0 0 */6 * * ?

2.2 每日固定时间执行

# 每天凌晨0点执行 0 0 0 * * ? # 每天上午8点执行 0 0 8 * * ? # 每天中午12点执行 0 0 12 * * ? # 每天下午18点执行 0 0 18 * * ? # 每天晚上23点59分执行 0 59 23 * * ? # 每天凌晨2点30分执行 0 30 2 * * ?

2.3 工作日/周末执行

# 工作日(周一到周五)上午9点执行 0 0 9 ? * MON-FRI # 工作日每天上午9点和下午18点执行 0 0 9,18 ? * MON-FRI # 周末(周六、周日)上午10点执行 0 0 10 ? * SAT,SUN # 周一上午9点执行 0 0 9 ? * MON # 周五下午17点执行 0 0 17 ? * FRI

2.4 每周固定时间执行

# 每周一上午8点执行 0 0 8 ? * MON # 每周二下午14点执行 0 0 14 ? * TUE # 每周三上午10点执行 0 0 10 ? * WED # 每周日凌晨1点执行(备份任务) 0 0 1 ? * SUN # 每周五晚上23点执行 0 0 23 ? * FRI

2.5 每月特定日期执行

# 每月1日凌晨0点执行 0 0 0 1 * ? # 每月15日上午10点执行 0 0 10 15 * ? # 每月1日和15日执行 0 0 0 1,15 * ? # 每月最后一天执行 0 0 0 L * ? # 每月最后一天上午10点执行 0 0 10 L * ? # 每季度第一天执行(1月、4月、7月、10月1日) 0 0 0 1 1,4,7,10 ?

2.6 复杂时间组合

# 每月1日和15日的凌晨2点执行 0 0 2 1,15 * ? # 工作日的每天上午9点到下午18点,每小时执行一次 0 0 9-18 ? * MON-FRI # 每周一、三、五的上午8点30分执行 0 30 8 ? * MON,WED,FRI # 每月第2个周五上午10点执行 0 0 10 ? * 5#2 # 每月最后一个周五执行 0 0 0 ? * 6L # 每月15日最近工作日执行(如果15日是周六,则14日执行;如果15日是周日,则16日执行) 0 0 10 15W * ?

三、示例解析与注意事项

3.1 典型示例详解

示例1:每日凌晨数据备份

0 0 2 * * ?
  • 含义:每天凌晨2点执行
  • 使用场景:数据库全量备份、日志归档
  • 说明:选择凌晨2点是因为系统负载较低

示例2:工作日报表生成

0 0 8 ? * MON-FRI
  • 含义:工作日(周一到周五)上午8点执行
  • 使用场景:生成前一天的业务报表
  • 说明:避开周末,确保工作日上班前完成

示例3:每月账单结算

0 0 0 1 * ?
  • 含义:每月1日0点执行
  • 使用场景:月度账单结算、统计归档
  • 说明:月初执行便于数据统计

示例4:每15分钟健康检查

0 */15 * * * ?
  • 含义:每15分钟执行一次
  • 使用场景:服务健康检查、心跳检测
  • 说明:高频检测但不过于频繁

示例5:每月第2个周二发送提醒

0 0 10 ? * 2#2
  • 含义:每月第2个周二上午10点
  • 使用场景:定期会议提醒、月度报告通知
  • 说明2#2表示第2个周二(2=周二)

3.2 常见陷阱与最佳实践

陷阱1:日和周字段冲突

错误示例:

0 0 12 1 * MON # 同时指定了1号和周一

正确示例:

0 0 12 1 * ? # 每月1日(不指定周) 0 0 12 ? * MON # 每周一(不指定日期)

说明:日和周字段互斥,必须有一个使用"?"。

陷阱2:间隔值的起始点

错误理解:*/5意味着从第5个单位开始
正确理解:*/5意味着从第0个单位开始,每隔5个单位

0/5 * * * * ? # 第0、5、10、15...秒执行 5/5 * * * * ? # 第5、10、15、20...秒执行

陷阱3:超出范围的日期

0 0 0 31 * ? # 2月31日不存在,不会执行

最佳实践

  • 使用L字符表示最后一天,避免日期不存在的问题
  • 对于跨月任务,考虑业务逻辑处理

陷阱4:时区问题

0 0 8 * * ? # 服务器时间上午8点,不一定是北京时间

最佳实践

  • 明确指定时区(如使用@Scheduledzone参数)
  • 统一使用UTC时间或服务器本地时间
  • 在任务文档中注明时区

陷阱5:系统时钟变更

  • 问题:服务器时钟调整(如NTP同步)可能导致任务重复执行或跳过
  • 解决方案:重要任务应结合分布式锁和数据库记录

最佳实践清单

  1. 明确业务需求

    • 任务执行频率是否合理?
    • 高频任务是否会造成性能压力?
  2. 添加任务日志

    • 记录任务开始时间、结束时间、执行结果
    • 便于排查问题和监控
  3. 异常处理

    • 任务执行失败时的重试机制
    • 异常告警通知
  4. 分布式环境考虑

    • 使用分布式锁避免重复执行
    • 考虑任务分片处理
  5. 文档化

    • 记录每个Cron表达式的用途和业务含义
    • 便于后续维护

四、实用工具推荐

4.1 Cron表达式在线工具

1. CronTab Guru

网址:https://crontab.guru/
特点

  • 简洁直观的界面
  • 实时解析Cron表达式
  • 提供常用示例库
  • 显示下次执行时间

适用场景:快速验证和生成基础Cron表达式

2. Cron表达式生成器

网址:https://www.bejson.com/othertools/cron/
特点

  • 中文界面
  • 可视化配置选项
  • 支持生成7字段表达式
  • 提供执行时间预览

适用场景:需要精确配置复杂时间规则

http://www.jsqmd.com/news/304179/

相关文章:

  • 客户端负载均衡与服务端负载均衡解释与对比
  • 分布式事务概念解析
  • 知识管理的智能进化:企业级智能体开发平台如何打造企业“第二大脑”?
  • 赋能智慧教育:企业级智能体开发平台在个性化学习与校园管理中的应用
  • 2026年正规防静电地板厂家推荐指南
  • C#实现指纹识别
  • 2026上海GEO服务商甄选指南:技术实力与落地能力测评
  • Skills vs Prompt vs MCP:从“工具调用“到“AI智能体“的跃迁,这篇文章值得收藏!
  • 工单为什么越堆越多
  • Qt常用控件指南(5)
  • 以云上服务回应基建难题:别让算力短板阻碍企业创新
  • 短期合作项目SolidWorks临时许可证配置与管理流程
  • 2026年防静电地板厂家权威推荐榜:成都防静电地板厂家、防静电全钢地板、防静电全钢地板厂家、防静电木基地板厂家选择指南
  • 四大核心技术领航,智慧园区重构产业生态新范式
  • 2026进口工业秤优质厂家实力排行与选购参考
  • 2026最新补血滋补品/补血口服液/补血保健品产品推荐复方红衣补血口服液:传承非遗匠心,守护全家健康
  • 2026年玻璃酒瓶厂家权威推荐榜:玻璃酒瓶生产/玻璃酒瓶设计/生日宴定制玻璃酒瓶/精白玻璃酒瓶厂/精白玻璃酒瓶定制/选择指南
  • VSCode 智能编程新范式:Cline 插件与小镜 AI 开放平台全能集成指南
  • 深度评测|高并发、0 丢包、失败秒退:揭秘小镜 AI 开放平台如何撑起企业级 Sora2 业务
  • AI Studio(百度飞桨)部署 DeepSeek-R1-33B DeepSeek-R1-14B 量化版本
  • 跨部门协同效率低:具备SLA、升级与协同看板的工单系统选型清单(2026)
  • 防火墙的关键技术有哪些
  • 基于Python与Flotherm、FloEFD等热仿真软件的深度结合
  • 数字孪生如何推动水利行业迈向智能化?
  • 百度旋转验证码识别
  • 2026泸州定制玻璃酒瓶优质供应商推荐榜
  • 2026最新补血口服液厂家五大推荐!高品质补血产品及品牌权威榜单发布,气血双补助力健康生活
  • RAGFlow 本地部署全攻略:10 分钟构建专业级 AI 知识库
  • 95%的舒适进化论:别硬扛,聪明点进化自己
  • 大模型应用RAG系列(一):初识RAG,RAG出现及未来发展趋势