Unix Cron 表达式生成器
可视化生成Cron表达式,轻松配置定时任务。支持分钟、小时、日期、月份、星期等时间单位设置,自动生成标准Cron表达式。
Cron表达式构建器
生成结果
输入现有的 Cron 表达式,自动设置对应的表单选项
可视化生成Cron表达式,轻松配置定时任务。支持分钟、小时、日期、月份、星期等时间单位设置,自动生成标准Cron表达式。
输入现有的 Cron 表达式,自动设置对应的表单选项
一个标准的 cron 表达式由 5 个时间字段和 1 个命令字段组成,其定义遵循 Unix 和 Linux 系统的通用规范。根据 IEEE Std 1003.1-2017(POSIX 标准)[1] 和 Linux man 5 crontab 文档[2],其格式如下:
* * * * * command-to-execute
│ │ │ │ │
│ │ │ │ └── 星期几 (0-7, 0和7均代表星期日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)
权威说明:
每个时间字段支持以下特殊符号:
| 符号 | 说明 | 示例 |
|---|---|---|
* |
匹配任意值 | * 在分钟字段 = 每分钟 |
, |
指定多个值 | 1,3,5 = 第1、3、5分钟 |
- |
定义范围 | 10-15 = 10到15分钟 |
/ |
步长(间隔周期) | */5 在分钟字段 = 每5分钟 |
? |
仅用于日期和星期字段,表示"不指定" | 常用于避免冲突 |
现代 cron 实现(如 Vixie cron 及其衍生版本)支持更丰富的语法规则。根据 IBM Cron 参考文档[4] 和 Cronie 项目 Wiki[3],以下符号被广泛支持:
| 符号 | 说明 | 官方文档示例 |
|---|---|---|
L |
月份最后一天(仅某些实现支持) | 0 0 L * * = 每月最后一天执行[5] |
W |
最近工作日(如 15W 表示最接近15日的工作日) |
参考 Quartz Scheduler 文档[6](常用于 Java 生态,部分 cron 兼容) |
@daily、@weekly 等别名源自 Paul Vixie 开发的 cron 实现(1987 年发布的 Vixie cron)[7],并成为现代 Linux 发行版(如 Debian、Red Hat)的默认支持功能。根据 Debian cron 手册[8]:
# 等价于 0 0 * * *
@daily /path/to/script
不同 cron 实现可能存在细微差异,需参考对应文档:
| 实现名称 | 特点 | 官方资源链接 |
|---|---|---|
| Cronie | Red Hat 系默认 cron,支持 @ 快捷方式 |
Cronie GitHub |
| systemd | 通过 .timer 单元替代 cron(推荐新系统使用) |
systemd.timer 手册 |
| fcron | 支持更复杂语法(如 @yearly) |
fcron 官网 |
Crontab 手册页
终端输入 man 5 crontab 查看完整语法,这是最直接的本地权威参考。
Cron 表达式生成器
开源项目文档
通过结合 POSIX 标准、Linux 手册页和主流实现(如 Cronie)的文档,用户可以精准掌握 cron 表达式的核心逻辑。对于高级用法(如 L 和 W),需注意不同实现的兼容性,并优先参考官方资源。
Cron 表达式是一个由空格分隔的 5 个或 7 个字段组成的字符串,在类 Unix 操作系统中用来表示时间调度。它允许您将任务(如备份、定时脚本或通知)安排在特定时间或按一定时间间隔自动运行。
标准模式使用 5 个字段(分钟、小时、日、月、星期),是 Linux/Unix crontab 的标准格式。扩展模式使用 7 个字段,增加了开头的“秒”和结尾的“年”。扩展模式常用于现代应用框架(如 Java 的 Quartz 或 Spring 任务调度)。
“?”符号代表“不指定值”。它只能用在“日”和“星期”字段。当您需要指定其中一个字段的具体值,但不在乎另一个字段时,这个符号非常有用。例如,如果您希望任务在每月的 10 号运行,而不管那天是星期几,您需要在“日”字段填 10,在“星期”字段填“?”以避免冲突。
可以!您可以使用“反向解析”功能。只需将您已有的 Cron 表达式粘贴到输入框中,然后点击“解析表达式”,可视化的配置面板会自动更新以反映该表达式的各项设置。