news 2026/4/16 1:52:05

Cron表达式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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字段表达式
  • 提供执行时间预览

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 14:45:09

VSCode 智能编程新范式:Cline 插件与小镜 AI 开放平台全能集成指南

🚀 核心聚焦:为什么选择小镜 AI 开放平台? 小镜 AI 开放平台不仅是模型的中转站,更是开发者首选的企业级 AI 基础设施。我们通过混合云架构连接全球算力,为 Cline 等智能插件提供强劲动力。 🌟 平台四大核…

作者头像 李华
网站建设 2026/4/14 7:40:07

基于STM32单片机环境检测温湿度 无线传输控制 报警系统 浇花

目录系统概述硬件组成软件设计系统扩展注意事项源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 该系统基于STM32单片机实现环境温湿度检测、无线数据传输、报警及自动浇花功能,适用于智能家居、农业温室等场景。核…

作者头像 李华
网站建设 2026/4/11 18:00:42

亲测好用自考必备TOP8 AI论文软件深度测评

亲测好用自考必备TOP8 AI论文软件深度测评 2026年自考论文写作工具测评:为何需要这份榜单? 随着人工智能技术的不断进步,AI论文辅助工具在自考群体中的应用日益广泛。然而,面对市场上种类繁多的软件,如何选择真正适合自…

作者头像 李华
网站建设 2026/4/10 17:49:59

从“小工”到“专家”,我的软件测试修炼之道

你好,我是茹炳晟。我从 2002 年开始做软件开发,2005 年时转型成为测试工程师,算起来已经在这个行业摸爬滚打了 16 年。2005 年的时候,软件测试还停留在重复性手工测试的阶段,而且受重视程度远不如软件开发,…

作者头像 李华
网站建设 2026/4/10 11:13:59

软件测试必备必背面试题(含详细答案)

公司测试的流程是什么? 需求评审 分析需求,编写测试用例 测试用例评审 执行测试用例 编写BUG单,提交BUG 回归测试,BUG追踪与管理 总结,编写测试报告 软件的概念是什么? 计算机系统中与硬件相互依…

作者头像 李华
网站建设 2026/4/10 6:26:35

SSM医疗资源普查6qxol(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

系统程序文件列表 系统项目功能:用户,乡镇管理员,县卫健委,医院,医师,主治医师,设备资源,医疗资源申报 SSM医疗资源普查系统开题报告 一、课题研究背景与意义 1.1 研究背景 医疗资源是保障公共卫生服务质量、推进医疗卫生事业均衡发展的核心基础,而医…

作者头像 李华