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表达式 的核心作用
- 用于精确描述定时任务的触发时间规则。
- 支持按分钟、小时、日期、月份和星期等维度设置执行计划。
- 减少人工重复执行周期性任务的成本。
- 让系统可以按照预设时间自动完成批处理和维护任务。
- 便于调度平台统一管理和修改任务计划。
为什么需要 Cron表达式
- 很多系统任务具有明显周期性,例如每天汇总、每周备份和每月结算。
- 如果完全依赖人工执行,容易遗漏时间点或导致执行不稳定。
- 简单的固定时间间隔配置无法覆盖复杂的时间规则需求。
- Cron表达式 能够用较短的字符串表示较灵活的调度规则。
- 它已经成为很多调度系统中的通用配置方式,便于理解和迁移。
Cron表达式 的基本原理
- 调度系统先按既定语法解析表达式中的各个时间字段。
- 每个字段分别对应秒、分、时、日、月、周等时间维度,不同实现支持的字段数量可能不同。
- 调度器会周期性获取当前时间,并与表达式中的每个字段进行匹配。
- 当所有必需字段都满足规则时,任务就会被触发执行。
- 任务执行后,系统继续等待下一个满足该表达式的时间点。
应用场景
- 数据库备份、日志清理和临时文件删除。
- 报表生成、数据同步和统计汇总任务。
- 消息补偿、超时处理和状态刷新作业。
- 系统巡检、监控检查和自动化运维脚本执行。
- 业务系统中的提醒、推送和定时流程处理。
使用时的注意事项
- 不同系统对 Cron表达式 的字段数量和语法支持可能不同,不能直接混用。
- 有些实现支持秒字段,有些只支持分、时、日、月、周等字段。
日和周字段同时设置时,在不同实现中可能存在兼容差异。- 使用
*、?、/、-、,等特殊字符时,应先确认具体语义。 - 除了调度规则本身,还需要考虑任务幂等性、执行时长和失败重试机制。
总结
Cron表达式 是一种用于描述定时调度规则的标准化字符串格式,能够以较简洁的方式表示复杂的时间安排。它在系统调度、自动化运维和业务任务处理中非常常见,但实际使用时需要特别注意不同实现之间的语法差异和运行行为。
常见问题 FAQ
Cron 表达式是几位?
常见为 6 位(秒 分 时 日 月 周),也支持带年字段的 7 位表达式。
“日”和“周”字段为什么经常一个用 ?
在 Quartz 风格中,日与周通常一个指定具体值,另一个使用 ? 表示不指定,避免冲突。
这个工具会上传我输入的表达式吗?
不会。表达式生成与下一次执行时间计算均在本地浏览器内完成。
为什么有些表达式计算失败?
通常是字段组合不合法或越界。可先用示例表达式验证,再逐步调整对应字段。
