"每周五凌晨执行" 的 Cron 表达式

0 0 0 * * 5

每周五凌晨0点执行

格式:Spring

Cron表达式生成器

Cron表达式在线生成器是一款专业的定时任务表达式工具,支持Linux Crontab、Quartz、Spring三种格式。可视化配置秒、分、时、日、月、周字段,实时预览下次执行时间,提供常用模板快速生成,帮助开发者轻松创建和调试定时任务。

AI 智能生成
每周五凌晨0点执行
秒 分 时 日 月 周
🎛️

字段配置

📋

常用模板

📊

执行结果

执行规则
0秒,0分,0时,每日,每月,周五
最近5次执行
01/30周五 00:00
02/06周五 00:00
02/13周五 00:00
02/20周五 00:00
02/27周五 00:00
💻

导出代码

0 0 0 * * 5
📖

Linux Crontab vs Quartz vs Spring Cron 语法对比

LinuxQuartzSpring
格式分时日月周秒分时日月周秒分时日月周
秒级
?
L/W/#

技术描述

Cron Expression Generator 是一款面向后端开发者和系统运维工程师的视觉化配置工具。它支持 Quartz、Linux Crontab 和 Spring 框架等多种标准。通过将复杂的通配符(如 * / ? L W)抽象为直观的 UI 组件,该工具将生成错误的概率降至零。后端逻辑通过严谨的时间轴模拟算法,能实时预测下五次执行的具体时间点。

适用场景

适合DevOps工程师配置定时任务、后端开发人员设置Spring/Quartz调度器、系统管理员管理crontab任务,以及任何需要创建或调试定时任务表达式的场景。可用于设置备份计划、报表生成、数据同步、自动化运维任务等。

使用教程

  1. 1
    选择频率在菜单中选择"每秒"、"每分钟"、"每日"或"自定义"。
  2. 2
    可视化选择通过复选框或滑块选择具体的执行周期(例如:周一至周五的凌晨 2 点)。
  3. 3
    实时预览下方会动态生成符合格式的 Cron 字符串,并显示"下一次执行时间"。
  4. 4
    复制代码一键复制到你的配置文件或 Java/Python 代码中。

常用 Cron 表达式示例

常见定时任务场景的 Cron 表达式 快速参考。 覆盖 Linux CrontabSpring @ScheduledQuartz 三种格式。点击表达式一键复制,可直接粘贴至 Jenkins、Spring Boot 或 Linux Crontab 配置文件。

场景描述Linux CrontabSpring CronQuartz适用场景
每分钟执行* * * * *0 * * * * *0 * * * * ?适用于实时监控、心跳检测
每5分钟执行*/5 * * * *0 */5 * * * *0 0/5 * * * ?适用于数据同步、缓存刷新
每10分钟执行*/10 * * * *0 */10 * * * *0 0/10 * * * ?适用于日志收集、状态上报
每30分钟执行*/30 * * * *0 */30 * * * *0 0/30 * * * ?适用于定时汇总、报表生成
每小时执行0 * * * *0 0 * * * *0 0 * * * ?适用于数据备份、统计分析
每天凌晨执行0 0 * * *0 0 0 * * *0 0 0 * * ?适用于日志清理、数据归档
每天凌晨3点执行0 3 * * *0 0 3 * * *0 0 3 * * ?适用于低峰期批量处理
每天早上8点执行0 8 * * *0 0 8 * * *0 0 8 * * ?适用于每日提醒、报表发送
工作日早上9点执行0 9 * * 1-50 0 9 * * 1-50 0 9 ? * 2-6适用于工作日定时任务
每周一凌晨执行0 0 * * 10 0 0 * * 10 0 0 ? * 2适用于周报生成、数据汇总
每月1号凌晨执行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支持)

常用 Cron 表达式场景速查

每隔 5 分钟执行一次的 Cron 表达式

0 */5 * * * ?

适用于数据同步、缓存刷新

cron表达式 5分钟一次

每天凌晨 2 点执行的定时备份任务

0 0 2 * * ?

适用于数据库备份、日志归档

cron表达式 凌晨2点

每周一早上 9 点执行的周报任务

0 0 9 ? * 2

适用于周报生成、数据汇总

cron表达式 每周一

工作日(周一至周五)执行的定时任务

0 0 9 ? * 2-6

适用于工作日提醒、业务报表

cron表达式 工作日执行

每月 1 号凌晨执行的月度结算

0 0 0 1 * ?

适用于账单生成、月度统计

cron表达式 每月1号

每小时整点执行的状态检测任务

0 0 * * * ?

适用于健康检查、监控上报

cron表达式 每小时执行

架构师笔记:Java/Kotlin Cron 任务最佳实践

⚠️ Spring Boot 中的"每秒执行"陷阱

使用 6 位表达式如 * * * * * *(每秒执行)时需特别小心。默认情况下,Spring 的 @Scheduled 运行在单线程TaskScheduler 上。如果你的任务执行需要 1.5 秒,但调度间隔是每 1 秒,队列就会不断积压,可能阻塞应用中的其他定时任务。解决方案:配置线程池,或对耗时任务使用 @Async 注解。

☕ Kotlin 与 Spring:语法糖要点

在 Kotlin 中使用 Spring Boot 时,如果使用顶层函数(top-level function),不需要将定时函数包装在类中。但标准的 Spring Bean 要求函数必须位于 @Component 类内部。另外,如果需要从同步的 @Scheduled 触发器中调用挂起函数(suspend function),请考虑使用 runBlocking

🔄 Linux Crontab vs Spring Cron vs Quartz 深度对比

  • Linux Crontab:5 个字段(分、时、日、月、周),不支持秒级调度。
  • Spring @Scheduled:6 个字段,在最前面增加了字段。
  • Quartz:6-7 个字段,可选的字段在末尾,且 ?* 在"日"和"周"字段中有不同的语义逻辑。

提示:我们的工具会自动处理格式转换,切换上方的标签页即可看到差异。

常见问题

如何编辑 Linux crontab?

在终端运行 crontab -e 命令,会打开默认编辑器(通常是 Vim 或 Nano)进行编辑。首次使用时系统可能会让你选择编辑器。

使用 crontab -e 后如何退出 Vim?

按 Esc 键退出编辑模式,输入 :wq(保存并退出)或 :q!(不保存退出),然后按回车确认。这是 Linux 新手最常遇到的问题之一。

如何查看或删除所有 cron 任务?

使用 crontab -l 列出当前用户的所有定时任务;使用 crontab -r 删除所有任务(警告:此操作不可撤销,请谨慎使用)。

Linux Crontab、Spring Cron 和 Quartz Cron 有什么区别?

Linux Crontab 使用 5 位格式(分 时 日 月 周),不支持秒级调度;Spring Cron 使用 6 位格式(秒 分 时 日 月 周),支持秒级但不支持 ? 和 L/W 特殊字符;Quartz Cron 同样是 6 位格式,功能最强大,支持 ?、L、W、# 等特殊字符,适合复杂的企业级调度场景。

如何将 Linux Crontab 表达式转换为 Spring Cron 格式?

只需在 Linux Crontab 表达式前面添加秒字段即可。例如 Linux 的 "0 8 * * *"(每天8点)转换为 Spring 格式就是 "0 0 8 * * *"(在最前面加 "0 " 表示第0秒执行)。

Quartz Cron 中的 ? 和 * 有什么区别?

在 Quartz 中,* 表示"每",而 ? 表示"不指定值"。由于"日"和"周"字段可能冲突(比如每月15号和每周一),Quartz 要求其中一个必须使用 ?。例如 "0 0 8 15 * ?" 表示每月15号8点,周字段用 ? 忽略。

Spring Boot 定时任务 @Scheduled 使用什么格式的 Cron?

Spring Boot 的 @Scheduled 注解使用 Spring Cron 格式(6位,秒分时日月周)。例如 @Scheduled(cron = "0 0 8 * * *") 表示每天早上8点执行。注意 Spring Cron 不支持年份字段和 Quartz 的某些特殊字符。

如何用 Cron 表达式实现每5分钟执行一次?

Linux Crontab 格式:*/5 * * * *;Spring Cron 格式:0 */5 * * * *;Quartz 格式:0 0/5 * * * ?。这三种写法都表示每5分钟执行一次,只是语法略有差异。

生成的 Cron 表达式可以直接用于 Linux Crontab 吗?

可以。选择"Linux Crontab"模式生成的表达式完美兼容所有主流 Linux 发行版(Ubuntu、CentOS、Debian等)。直接复制到 crontab -e 编辑器中即可使用。

Jenkins Pipeline 支持哪种 Cron 表达式格式?

Jenkins 使用标准的 5 位 Linux Crontab 格式(分 时 日 月 周),在 Jenkinsfile 中通过 triggers { cron("0 8 * * 1-5") } 配置。Jenkins 还支持 H 符号实现负载均衡,如 H/15 * * * * 表示每15分钟执行但起始时间随机分散。

Spring @Scheduled Cron 表达式报错 "Cron expression must consist of 6 fields" 怎么解决?

这个错误说明你使用了 5 位的 Linux 格式而非 6 位的 Spring 格式。Spring Cron 必须包含秒字段。解决方案:在表达式最前面添加秒字段,如将 "0 8 * * *" 改为 "0 0 8 * * *"(第一个0表示秒)。

Quartz Cron 表达式报错 "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented" 如何修复?

Quartz 不允许同时指定"日"和"周"字段的具体值,必须将其中一个设为 ?。例如要在每月15号执行,应写 "0 0 8 15 * ?" 而非 "0 0 8 15 * *"。将周字段改为 ? 即可解决。

如何设置只在周末(周六周日)执行的 Cron 表达式?

Linux Crontab 格式:0 9 * * 0,6(周日=0,周六=6);Spring Cron 格式:0 0 9 * * 0,6;Quartz 格式:0 0 9 ? * 1,7(Quartz 周日=1,周六=7)。注意不同格式对星期的编号规则不同。

如何用 Cron 实现每月最后一天执行?

Linux Crontab 不直接支持"最后一天"语法,通常用脚本判断或写 "0 0 28-31 * *" 近似。Spring Cron 支持 L 字符:0 0 0 L * *。Quartz 同样支持:0 0 0 L * ?。推荐使用 Quartz 或 Spring Cron 来实现这类复杂需求。

如何实现每30秒执行一次的定时任务?

Linux Crontab 最小粒度是分钟,不支持秒级。Spring Cron 可以用 "0,30 * * * * *" 表示每分钟的第0秒和第30秒执行。Quartz 格式相同:0,30 * * * * ?。如需更精确的秒级控制,建议考虑使用 ScheduledExecutorService。

Linux Crontab 语法速查表 & 常见问题

解决 crontab 编辑、Vim 退出等常见操作问题

如何编辑 Cron 任务?
crontab -e终端运行 crontab -e默认编辑器通常是 Vim 或 Nano
如何退出 Vim 编辑器?
:wq按 Esc 键,输入 :wq,然后回车:wq 表示保存并退出,:q! 表示不保存退出
如何查看或删除任务?
crontab -lcrontab -l 查看,crontab -r 删除所有警告:crontab -r 会删除所有任务,无法撤销

Cron 5字段格式(Linux)

分钟0-59*/5
小时0-238
1-311
1-12*
0-61-5

提示:Linux crontab 是 5 位格式,Spring/Quartz 是 6 位格式(前面多一个"秒"字段)

热门 Cron 场景

点击下方任意场景,AI 将自动生成对应的 Cron 表达式。

每周五 Cron表达式:0 0 0 * * 5 | 在线生成器 | YYTools.cc