免费Cron表达式生成器 – 可视化构建器与测试器

即时构建、验证和测试Cron表达式。获得任意计划的中文说明,查看未来10次运行时间,并为Unix cron、Quartz、AWS EventBridge、GitHub Actions和Kubernetes CronJob生成语法 – 全部免费,无需注册,完全在浏览器中运行。

Loading Cron Builder...

100% 免费与私密

所有处理皆在浏览器进行。永不上传数据。无需注册,安全工具。

基于浏览器无服务器日志无历史记录

如何构建Cron表达式

  1. 使用预设按钮选择常见计划,或从* * * * *开始
  2. 使用可视化控件调整每个字段 – 选择每次、特定值、范围或步进
  3. 构建时即时查看中文说明更新
  4. 检查未来10次运行面板,验证计划是否符合预期
  5. 点击复制以复制表达式,或复制为注释以包含说明块
  6. 使用分享按钮生成可发送给同事的URL

理解五个Cron字段

标准Cron表达式有五个以空格分隔的字段。第一个字段是分钟(0–59),第二个是小时(0–23),第三个是月中的天(1–31),第四个是月份(1–12),第五个是一周中的天(0–7,0和7都代表周日)。Quartz Scheduler等系统会在开头添加字段。

字段组合定义了任务应何时运行。例如,30 8 * * 1-5在每个工作日的8:30运行,0 2 * * *每天2:00运行备份任务。

Cron特殊字符说明

* (星号) – 通配符,匹配所有可能的值。小时字段中的*表示每小时。

,(逗号) – 选择多个不同的值。分钟字段中的1,5,10表示第1、5、10分钟。

- (连字符) – 定义包含范围。小时字段中的9-17表示从9时到17时的每个小时。

/ (正斜杠) – 定义增量或步进。分钟字段中的*/15表示每15分钟。

L (最后) – 月份的最后一天或最后一个特定工作日。5L表示最后一个周五。Quartz和AWS EventBridge支持。

W (工作日) – 距特定日期最近的工作日。15W表示距15日最近的周一至周五。

# (井号) – 工作日的第N次出现。1#3表示第三个周一。仅Quartz和部分扩展cron实现支持。

? (问号) – 无特定值。在Quartz和AWS EventBridge中用于月中的天或一周中的天,以避免冲突约束。

常见Cron错误

  • 字段顺序错误 – 分钟在小时之前。顺序始终为:分 时 月日 月 周日。
  • 0和7都是周日 – 忘记这一点会导致一周中的天表达式出现意外行为。
  • 在分钟字段使用*/60 – 这不会产生匹配,因为60超出范围(0–59)。
  • 同时指定月日和周日 – 在标准Unix cron中,任一条件满足即触发任务(OR逻辑)。若只需一个约束,请在另一字段使用*
  • 期望0 9-17 * * *在9–17期间每分钟运行 – 实际上只在每小时的第0分钟触发(9:00、10:00...)。
  • 时区盲点 – cron在服务器本地时区运行,除非另行配置。分布式系统和云调度器请使用UTC。

各平台Cron表达式语法

Cron语法因平台而异。同一计划在Unix cron、Quartz Scheduler、AWS EventBridge、GitHub Actions或Kubernetes CronJob中可能需要不同的表达式。

Unix / Linux Cron
5 fields
min hour dom month dow

0 and 7 are both Sunday. No seconds field. No ? operator.

Quartz Scheduler (Java)
6–7 fields
sec min hour dom month dow [year]

1=Sunday, 7=Saturday. Requires ? in dom or dow. Supports L, W, #.

AWS EventBridge
6 fields
min hour dom month dow year

Always UTC. Requires ? in dom or dow. Also supports rate() expressions.

GitHub Actions
5 fields (POSIX)
min hour dom month dow

Always UTC. Minimum interval: 5 minutes. Runs on default branch only.

Kubernetes CronJob
5 fields
min hour dom month dow

UTC by default. timeZone field supported from Kubernetes 1.27+.

Common Cron Expressions Across Platforms

计划UnixQuartzAWSGitHubK8s
Every minute
* * * * *
0 * * * * ?* * * * ? ** * * * ** * * * *
Every 5 minutes
*/5 * * * *
0 */5 * * * ?*/5 * * * ? **/5 * * * **/5 * * * *
Every hour at :00
0 * * * *
0 0 * * * ?0 * * * ? *0 * * * *0 * * * *
Daily at midnight
0 0 * * *
0 0 0 * * ?0 0 * * ? *0 0 * * *0 0 * * *
Weekdays at 9 AM
0 9 * * 1-5
0 0 9 ? * MON-FRI0 9 ? * MON-FRI *0 9 * * 1-50 9 * * 1-5
1st of every month
0 0 1 * *
0 0 0 1 * ?0 0 1 * ? *0 0 1 * *0 0 1 * *
Last day of month
0 0 L * *
❌ (workaround needed)0 0 0 L * ?0 0 L * ? *❌ (not supported)❌ (not supported)
Every Monday 8:30 AM
30 8 * * 1
0 30 8 ? * MON30 8 ? * MON *30 8 * * 130 8 * * 1
Every Sunday midnight
0 0 * * 0
0 0 0 ? * SUN0 0 ? * SUN *0 0 * * 00 0 * * 0
Daily at 2 AM (backups)
0 2 * * *
0 0 2 * * ?0 2 * * ? *0 2 * * *0 2 * * *

为什么使用此Cron表达式构建器?

与crontab.guru等简单工具不同,EveryTool的cron构建器提供了一个完整的可视化环境,用于构建、验证和分享Cron表达式 – 无需安装任何东西或创建账户。

  • 带有每次、特定值、范围和步进模式的逐字段可视化构建器
  • 任意表达式的即时中文说明
  • 带相对时间显示的未来10次运行时间
  • 时区选择器 – 在您的本地时区验证时间
  • 16个快速预设计划(备份、报告、清理、监控)
  • 支持秒的6字段cron(兼容Quartz Scheduler)
  • 包含所有特殊字符的完整cron语法参考
  • 逐字段表达式验证器
  • 可分享的URL – 粘贴链接分享您的确切表达式
  • 适用于所有设备,包括移动设备
  • 100%免费 – 无需注册、无需账户、不上传任何数据

Frequently Asked Questions

什么是Cron表达式?

Cron表达式是一个由5个空格分隔的字段(分钟、小时、月中的天、月份、一周中的天)组成的字符串,定义自动化任务的定期计划。Quartz Scheduler等系统使用6个字段,在开头添加秒字段。

cron中的 * * * * * 是什么意思?

表达式 * * * * * 表示'每天每小时每分钟'。每个星号是一个字段的通配符:分钟(0–59)、小时(0–23)、月中的天(1–31)、月份(1–12)、一周中的天(0–7,0和7都代表周日)。

如何每5分钟运行一次Cron任务?

使用表达式 */5 * * * *。分钟字段中的*/5表示'从0开始每5分钟' – 在每小时的0、5、10、15、20、25、30、35、40、45、50和55分钟运行。

如何仅在工作日调度Cron任务?

在一周中的天字段使用1-5。例如,0 9 * * 1-5在周一至周五的9:00运行。0和7都代表周日,因此在仅工作日的表达式中避免使用这些值。

Cron中DOM和DOW有什么区别?

DOM(月中的天)针对特定日历日期。DOW(一周中的天)针对特定工作日。在标准Unix cron中,如果两个字段都指定(都不是*),则任一条件成立时任务运行(OR逻辑)。

如何在月份的最后一天运行Cron任务?

在月中的天字段使用L:0 0 L * * 在每月最后一天午夜运行。L字符在Quartz Scheduler和AWS EventBridge中受支持,但标准Unix cron不支持。

Cron表达式中的*/5是什么意思?

/ 字符是步进运算符。*/5表示'从范围开始每5个单位'。在分钟字段(范围0–59)中,*/5产生0、5、10、15、20、25、30、35、40、45、50、55。

这个Cron表达式构建器是免费的吗?

是的,完全免费,无需账户或注册。所有Cron解析、中文说明生成和下次运行时间计算都在您的浏览器中运行。任何表达式或数据都不会发送到任何服务器。

Unix cron和Quartz Scheduler cron有什么区别?

Unix cron使用5个字段:分钟、小时、月中的天、月份、一周中的天。Quartz Scheduler使用6或7个字段,在开头添加秒字段,末尾可选年份字段。Quartz的工作日编号也不同:1=周日至7=周六。

如何为AWS EventBridge编写Cron表达式?

AWS EventBridge使用6字段格式:分钟、小时、月中的天、月份、一周中的天、年份。它要求在月中的天或一周中的天字段使用?(不能两个都用)。EventBridge始终以UTC运行。

如何使用cron调度GitHub Actions工作流?

在工作流YAML中使用schedule触发器,配合标准5字段cron表达式。示例:cron: '0 2 * * *' 每天UTC 2:00运行。GitHub Actions强制最小间隔5分钟,始终以UTC运行。

我可以每30秒运行一次Cron任务吗?

标准5字段Unix cron只支持分钟级精度。对于亚分钟间隔,使用Quartz Scheduler的6字段cron(如 0/30 * * * * ? 表示每30秒)或node-cron、APScheduler等应用级调度器。

如何调试未运行的Cron任务?

首先验证您的cron表达式。常见原因:字段顺序错误(分钟在小时之前)、时区不匹配、脚本路径不是绝对路径、缺少执行权限。检查日志:grep CRON /var/log/syslog 或 journalctl -u cron。

cron和systemd定时器有什么区别?

两者都调度定期任务。systemd定时器通过journald提供更好的日志记录、依赖项管理、随机延迟以及在停机后追赶错过的运行。Cron更简单,在所有Unix/Linux系统上普遍可用。

如何设置Kubernetes CronJob计划?

Kubernetes CronJob在spec.schedule字段使用标准5字段Unix cron语法。示例:schedule: '0 2 * * *' 每天2:00运行。从Kubernetes 1.27+起,可以使用spec.timeZone指定时区。