Cron表达式生成器 - 在线Cron解析与执行时间计算工具

Cron表达式是一个由时间字段组成的字符串,用于定义任务的执行时间计划。标准格式:由6个或7个时间字段组成,每个字段包含数字、特殊字符和运算符(* - , / ? L W #),字段之间用空格分隔。 填写控件轻松生成Cron表达式

实时便捷生成表达式及最近10次运行时间

Cron 表达式:

最近 10 次执行时间点:

Cron 表达式结构图示:
        
*   *   *   *   *   *   *
┬   ┬   ┬   ┬   ┬   ┬   ┬
│   │   │   │   │   │   └─ 年(可选)
│   │   │   │   │   └─ 星期 (0-7, 1L-7L,0/7 为周日)
│   │   │   │   └─ 月份 (1-12, JAN-DEC)
│   │   │   └─ 日 (1-31, L)
│   │   └─ 小时 (0-23)
│   └─ 分钟 (0-59)
└─ 秒 (0-59 传统 cron 在绝大多数 Unix / Linux 系统上都是「没有秒」这个字段的)
      
特殊字符说明:
字符说明示例
*匹配任意值* 在分钟字段中表示每分钟执行
,分隔多个值1,3,5 在小时字段中表示 1 点、3 点和 5 点执行
/指定间隔值*/5 在分钟字段中表示每 5 分钟执行一次
-指定范围10-20 在日期字段中表示从 10 号到 20 号
?不指定具体值,仅用于日期或星期字段? 在日或星期字段中表示不指定具体值
L最后,用于日或星期字段L 在日字段中表示当月最后一天,L 在星期字段中表示该月最后一个星期 X
W最近工作日,仅用于日字段15W 在日字段中表示离 15 号最近的工作日(周一到周五)
#指定第几个星期几,仅用于星期字段5#3 在星期字段中表示每月第 3 个星期五

常用 Cron 表达式示例

0/2 * * * * ?每 2 秒执行任务
0 0/2 * * * ?每 2 分钟执行任务
0 0 2 1 * ?每月 1 日的凌晨 2 点执行任务
0 15 10 ? * MON-FRI周一到周五每天上午 10:15 执行任务
0 0 10,14,16 * * ?每天上午 10 点、下午 2 点、4 点执行任务
0 0/30 9-17 * * ?朝九晚五工作时间内每半小时执行任务
0 0 12 ? * WED每个星期三中午 12 点执行任务
0 0 12 * * ?每天中午 12 点执行任务
0 15 10 ? * *每天上午 10:15 执行任务
0 15 10 * * ?每天上午 10:15 执行任务
0 15 10 * * ? 20052005 年每天上午 10:15 执行任务
0 * 14 * * ?每天下午 2 点到 2:59 期间的每分钟执行任务
0 0/5 14 * * ?每天下午 2 点到 2:55 期间的每 5 分钟执行任务
0 0/5 14,18 * * ?每天下午 2 点到 2:55 和下午 6 点到 6:55 期间的每 5 分钟执行任务
0 0-5 14 * * ?每天下午 2 点到 2:05 期间的每分钟执行任务
0 10,44 14 ? 3 WED每年 3 月的星期三下午 2:10 和 2:44 执行任务
0 15 10 ? * MON-FRI周一至周五上午 10:15 执行任务
0 15 10 15 * ?每月 15 日上午 10:15 执行任务
0 15 10 ? * 6#3每月第三个星期五上午 10:15 执行任务

功能使用

先在“秒、分钟、小时、日、月、周、年”7个字段中按需设置规则,系统会实时拼接完整 Cron 表达式。 配置完成后点击“运行表达式”,即可查看未来 10 次执行时间,便于快速校验调度是否符合预期。

如果你需要更复杂的配置,可结合下方“特殊字符说明”和“常用表达式示例”进行组合。 推荐在上线前至少验证一次边界时间(如月底、跨月、周末)来避免误触发。

Cron表达式 定义

Cron表达式是一种用于描述定时任务执行时间规则的字符串格式,常用于操作系统调度、后端作业系统、任务平台和自动化运维场景中。

它通过多个按固定顺序排列的时间字段,定义任务应在什么时间、什么周期和什么频率下执行。开发和运维人员通常使用 Cron表达式 配置自动执行的备份、清理、同步、统计和通知等任务。

Cron表达式 的核心作用

  1. 用于精确描述定时任务的触发时间规则。
  2. 支持按分钟、小时、日期、月份和星期等维度设置执行计划。
  3. 减少人工重复执行周期性任务的成本。
  4. 让系统可以按照预设时间自动完成批处理和维护任务。
  5. 便于调度平台统一管理和修改任务计划。

为什么需要 Cron表达式

  1. 很多系统任务具有明显周期性,例如每天汇总、每周备份和每月结算。
  2. 如果完全依赖人工执行,容易遗漏时间点或导致执行不稳定。
  3. 简单的固定时间间隔配置无法覆盖复杂的时间规则需求。
  4. Cron表达式 能够用较短的字符串表示较灵活的调度规则。
  5. 它已经成为很多调度系统中的通用配置方式,便于理解和迁移。

Cron表达式 的基本原理

  1. 调度系统先按既定语法解析表达式中的各个时间字段。
  2. 每个字段分别对应秒、分、时、日、月、周等时间维度,不同实现支持的字段数量可能不同。
  3. 调度器会周期性获取当前时间,并与表达式中的每个字段进行匹配。
  4. 当所有必需字段都满足规则时,任务就会被触发执行。
  5. 任务执行后,系统继续等待下一个满足该表达式的时间点。

应用场景

  1. 数据库备份、日志清理和临时文件删除。
  2. 报表生成、数据同步和统计汇总任务。
  3. 消息补偿、超时处理和状态刷新作业。
  4. 系统巡检、监控检查和自动化运维脚本执行。
  5. 业务系统中的提醒、推送和定时流程处理。

使用时的注意事项

  1. 不同系统对 Cron表达式 的字段数量和语法支持可能不同,不能直接混用。
  2. 有些实现支持秒字段,有些只支持分、时、日、月、周等字段。
  3. 字段同时设置时,在不同实现中可能存在兼容差异。
  4. 使用 *?/-, 等特殊字符时,应先确认具体语义。
  5. 除了调度规则本身,还需要考虑任务幂等性、执行时长和失败重试机制。

总结

Cron表达式 是一种用于描述定时调度规则的标准化字符串格式,能够以较简洁的方式表示复杂的时间安排。它在系统调度、自动化运维和业务任务处理中非常常见,但实际使用时需要特别注意不同实现之间的语法差异和运行行为。

常见问题 FAQ

Cron 表达式是几位?

常见为 6 位(秒 分 时 日 月 周),也支持带年字段的 7 位表达式。

“日”和“周”字段为什么经常一个用 ?

在 Quartz 风格中,日与周通常一个指定具体值,另一个使用 ? 表示不指定,避免冲突。

这个工具会上传我输入的表达式吗?

不会。表达式生成与下一次执行时间计算均在本地浏览器内完成。

为什么有些表达式计算失败?

通常是字段组合不合法或越界。可先用示例表达式验证,再逐步调整对应字段。