技术描述
Cron Expression Generator 是一款面向后端开发者和系统运维工程师的视觉化配置工具。它支持 Quartz、Linux Crontab 和 Spring 框架等多种标准。通过将复杂的通配符(如 * / ? L W)抽象为直观的 UI 组件,该工具将生成错误的概率降至零。后端逻辑通过严谨的时间轴模拟算法,能实时预测下五次执行的具体时间点。
0 */5 * * * *每5分钟同步一次数据,保持数据一致性
格式:SpringCron表达式在线生成器是一款专业的定时任务表达式工具,支持Linux Crontab、Quartz、Spring三种格式。可视化配置秒、分、时、日、月、周字段,实时预览下次执行时间,提供常用模板快速生成,帮助开发者轻松创建和调试定时任务。
0 */5 * * * *Cron Expression Generator 是一款面向后端开发者和系统运维工程师的视觉化配置工具。它支持 Quartz、Linux Crontab 和 Spring 框架等多种标准。通过将复杂的通配符(如 * / ? L W)抽象为直观的 UI 组件,该工具将生成错误的概率降至零。后端逻辑通过严谨的时间轴模拟算法,能实时预测下五次执行的具体时间点。
适合DevOps工程师配置定时任务、后端开发人员设置Spring/Quartz调度器、系统管理员管理crontab任务,以及任何需要创建或调试定时任务表达式的场景。可用于设置备份计划、报表生成、数据同步、自动化运维任务等。
常见定时任务场景的 Cron 表达式 快速参考。 覆盖 Linux Crontab、Spring @Scheduled、Quartz 三种格式。点击表达式一键复制,可直接粘贴至 Jenkins、Spring Boot 或 Linux Crontab 配置文件。
* * * * *0 * * * * *0 * * * * ?适用于实时监控、心跳检测*/5 * * * *0 */5 * * * *0 0/5 * * * ?适用于数据同步、缓存刷新*/10 * * * *0 */10 * * * *0 0/10 * * * ?适用于日志收集、状态上报*/30 * * * *0 */30 * * * *0 0/30 * * * ?适用于定时汇总、报表生成0 * * * *0 0 * * * *0 0 * * * ?适用于数据备份、统计分析0 0 * * *0 0 0 * * *0 0 0 * * ?适用于日志清理、数据归档0 3 * * *0 0 3 * * *0 0 3 * * ?适用于低峰期批量处理0 8 * * *0 0 8 * * *0 0 8 * * ?适用于每日提醒、报表发送0 9 * * 1-50 0 9 * * 1-50 0 9 ? * 2-6适用于工作日定时任务0 0 * * 10 0 0 * * 10 0 0 ? * 2适用于周报生成、数据汇总0 0 1 * *0 0 0 1 * *0 0 0 1 * ?适用于月度结算、账单生成0 0 28-31 * *0 0 0 L * *0 0 0 L * ?适用于月末汇总(L仅Quartz支持)0 */5 * * * ?适用于数据同步、缓存刷新
cron表达式 5分钟一次0 0 2 * * ?适用于数据库备份、日志归档
cron表达式 凌晨2点0 0 9 ? * 2适用于周报生成、数据汇总
cron表达式 每周一0 0 9 ? * 2-6适用于工作日提醒、业务报表
cron表达式 工作日执行0 0 0 1 * ?适用于账单生成、月度统计
cron表达式 每月1号0 0 * * * ?适用于健康检查、监控上报
cron表达式 每小时执行* * * * * *(每秒执行)时需特别小心。默认情况下,Spring 的 @Scheduled 运行在单线程的 TaskScheduler 上。如果你的任务执行需要 1.5 秒,但调度间隔是每 1 秒,队列就会不断积压,可能阻塞应用中的其他定时任务。解决方案:配置线程池,或对耗时任务使用 @Async 注解。@Component 类内部。另外,如果需要从同步的 @Scheduled 触发器中调用挂起函数(suspend function),请考虑使用 runBlocking。? 和 * 在"日"和"周"字段中有不同的语义逻辑。提示:我们的工具会自动处理格式转换,切换上方的标签页即可看到差异。
在终端运行 crontab -e 命令,会打开默认编辑器(通常是 Vim 或 Nano)进行编辑。首次使用时系统可能会让你选择编辑器。
按 Esc 键退出编辑模式,输入 :wq(保存并退出)或 :q!(不保存退出),然后按回车确认。这是 Linux 新手最常遇到的问题之一。
使用 crontab -l 列出当前用户的所有定时任务;使用 crontab -r 删除所有任务(警告:此操作不可撤销,请谨慎使用)。
Linux Crontab 使用 5 位格式(分 时 日 月 周),不支持秒级调度;Spring Cron 使用 6 位格式(秒 分 时 日 月 周),支持秒级但不支持 ? 和 L/W 特殊字符;Quartz Cron 同样是 6 位格式,功能最强大,支持 ?、L、W、# 等特殊字符,适合复杂的企业级调度场景。
只需在 Linux Crontab 表达式前面添加秒字段即可。例如 Linux 的 "0 8 * * *"(每天8点)转换为 Spring 格式就是 "0 0 8 * * *"(在最前面加 "0 " 表示第0秒执行)。
在 Quartz 中,* 表示"每",而 ? 表示"不指定值"。由于"日"和"周"字段可能冲突(比如每月15号和每周一),Quartz 要求其中一个必须使用 ?。例如 "0 0 8 15 * ?" 表示每月15号8点,周字段用 ? 忽略。
Spring Boot 的 @Scheduled 注解使用 Spring Cron 格式(6位,秒分时日月周)。例如 @Scheduled(cron = "0 0 8 * * *") 表示每天早上8点执行。注意 Spring Cron 不支持年份字段和 Quartz 的某些特殊字符。
Linux Crontab 格式:*/5 * * * *;Spring Cron 格式:0 */5 * * * *;Quartz 格式:0 0/5 * * * ?。这三种写法都表示每5分钟执行一次,只是语法略有差异。
可以。选择"Linux Crontab"模式生成的表达式完美兼容所有主流 Linux 发行版(Ubuntu、CentOS、Debian等)。直接复制到 crontab -e 编辑器中即可使用。
Jenkins 使用标准的 5 位 Linux Crontab 格式(分 时 日 月 周),在 Jenkinsfile 中通过 triggers { cron("0 8 * * 1-5") } 配置。Jenkins 还支持 H 符号实现负载均衡,如 H/15 * * * * 表示每15分钟执行但起始时间随机分散。
这个错误说明你使用了 5 位的 Linux 格式而非 6 位的 Spring 格式。Spring Cron 必须包含秒字段。解决方案:在表达式最前面添加秒字段,如将 "0 8 * * *" 改为 "0 0 8 * * *"(第一个0表示秒)。
Quartz 不允许同时指定"日"和"周"字段的具体值,必须将其中一个设为 ?。例如要在每月15号执行,应写 "0 0 8 15 * ?" 而非 "0 0 8 15 * *"。将周字段改为 ? 即可解决。
Linux Crontab 格式:0 9 * * 0,6(周日=0,周六=6);Spring Cron 格式:0 0 9 * * 0,6;Quartz 格式:0 0 9 ? * 1,7(Quartz 周日=1,周六=7)。注意不同格式对星期的编号规则不同。
Linux Crontab 不直接支持"最后一天"语法,通常用脚本判断或写 "0 0 28-31 * *" 近似。Spring Cron 支持 L 字符:0 0 0 L * *。Quartz 同样支持:0 0 0 L * ?。推荐使用 Quartz 或 Spring Cron 来实现这类复杂需求。
Linux Crontab 最小粒度是分钟,不支持秒级。Spring Cron 可以用 "0,30 * * * * *" 表示每分钟的第0秒和第30秒执行。Quartz 格式相同:0,30 * * * * ?。如需更精确的秒级控制,建议考虑使用 ScheduledExecutorService。
解决 crontab 编辑、Vim 退出等常见操作问题
crontab -e终端运行 crontab -e默认编辑器通常是 Vim 或 Nano:wq按 Esc 键,输入 :wq,然后回车:wq 表示保存并退出,:q! 表示不保存退出crontab -lcrontab -l 查看,crontab -r 删除所有警告:crontab -r 会删除所有任务,无法撤销*/581*1-5提示:Linux crontab 是 5 位格式,Spring/Quartz 是 6 位格式(前面多一个"秒"字段)
点击下方任意场景,AI 将自动生成对应的 Cron 表达式。