技术描述
配置 Linux、Spring 或 Quartz 字段,在浏览器本地按 UTC 预览未来执行时间。无效、不支持或超过搜索范围的规则会显示明确状态。使用时核对目标调度器版本与时区;方言按钮载入默认模板,不自动转换现有规则。
0 0 0 * * 1-5周一至周五凌晨0点执行
格式:SpringYYTOOLS / 日常工作工具箱
可视化生成 Linux、Quartz 和 Spring 表达式,并实时预览执行时间和导出代码。
无需登录 · 可视化配置 · 实时预览
方言按钮用于切换默认模板,不转换当前规则;代码导出仅使用所选方言。
预览时区:UTC。暂不支持其他时区与夏令时规则;调度器也须配置 UTC 才与这些时间一致。
Spring 的日和星期共同约束(且);0 或 7 表示周日。
正在准备 UTC 预览…
0 0 0 * * 1-5配置 Linux、Spring 或 Quartz 字段,在浏览器本地按 UTC 预览未来执行时间。无效、不支持或超过搜索范围的规则会显示明确状态。使用时核对目标调度器版本与时区;方言按钮载入默认模板,不自动转换现有规则。
适合DevOps工程师配置定时任务、后端开发人员设置Spring/Quartz调度器、系统管理员管理crontab任务,以及任何需要创建或调试定时任务表达式的场景。可用于设置备份计划、报表生成、数据同步、自动化运维任务等。
常见定时任务场景的 Cron 表达式 快速参考。 覆盖 Linux Crontab、Spring @Scheduled、Quartz 三种格式。点击表达式一键复制,请使用目标调度器对应的列,并核对时区。
* * * * *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 0 L * *0 0 0 L * ?适用于月末汇总(Spring 5.3+ / Quartz 支持 L)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 位格式(秒 分 时 日 月 周),支持秒级,并在 Spring 5.3+ 中支持 ?、L、W、# 等特殊字符;Quartz Cron 同样是 6 位格式,支持可选年份及 ?、L、W、# 等特殊字符,注意星期编号和 Spring 不同。
若只有日或星期中的一个字段受限,可以在 Linux Crontab 表达式前添加秒字段;两个字段都受限时 Linux 为或关系、Spring 为且关系,不能直接转换。例如 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分钟执行一次,只是语法略有差异。
请先确认目标 cron 实现、环境变量和时区。本页预览只按 UTC 计算;使用本机时区的 crontab 需要单独核对执行时间。
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。