免费Cron表达式生成器 – 可视化构建器 与测试器
即时构建、验证和测试Cron表达式。获得任意计划的中文说明,查看未来10次运行时间,并为Unix cron、Quartz、AWS EventBridge、GitHub Actions和Kubernetes CronJob生成语法 – 全部免费,无需注册,完全在浏览器中运行。
Loading Cron Builder...
100% 免费与私密
所有处理皆在浏览器进行。永不上传数据。无需注册,安全工具。
如何构建Cron表达式
- 使用预设按钮选择常见计划,或从
* * * * *开始 - 使用可视化控件调整每个字段 – 选择每次、特定值、范围或步进
- 构建时即时查看中文说明更新
- 检查未来10次运行面板,验证计划是否符合预期
- 点击复制以复制表达式,或复制为注释以包含说明块
- 使用分享按钮生成可发送给同事的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中可能需要不同的表达式。
min hour dom month dow0 and 7 are both Sunday. No seconds field. No ? operator.
sec min hour dom month dow [year]1=Sunday, 7=Saturday. Requires ? in dom or dow. Supports L, W, #.
min hour dom month dow yearAlways UTC. Requires ? in dom or dow. Also supports rate() expressions.
min hour dom month dowAlways UTC. Minimum interval: 5 minutes. Runs on default branch only.
min hour dom month dowUTC by default. timeZone field supported from Kubernetes 1.27+.
Common Cron Expressions Across Platforms
| 计划 | Unix | Quartz | AWS | GitHub | K8s |
|---|---|---|---|---|---|
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-FRI | 0 9 ? * MON-FRI * | 0 9 * * 1-5 | 0 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 ? * MON | 30 8 ? * MON * | 30 8 * * 1 | 30 8 * * 1 |
Every Sunday midnight 0 0 * * 0 | ✓ | 0 0 0 ? * SUN | 0 0 ? * SUN * | 0 0 * * 0 | 0 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指定时区。