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 项目 Wiki3,以下符号被广泛支持:
符号 | 说明 | 官方文档示例 |
---|---|---|
L | 月份最后一天(仅某些实现支持) | 0 0 L * * = 每月最后一天执行5 |
W | 最近工作日(如 15W 表示最接近15日的工作日) | 参考 Quartz Scheduler 文档6(常用于 Java 生态,部分 cron 兼容) |
三、预定义别名(@daily 等)的来源
@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 表达式生成器
- IBM Cron 文档4(企业级场景案例)
-
开源项目文档
六、总结
通过结合 POSIX 标准、Linux 手册页和主流实现(如 Cronie)的文档,用户可以精准掌握 cron 表达式的核心逻辑。对于高级用法(如 L
和 W
),需注意不同实现的兼容性,并优先参考官方资源。
Footnotes
-
Linux
man 5 crontab
手册页 ↩ -
Cronie 官方文档: GitHub Wiki ↩ ↩2
-
Quartz Cron 语法: Quartz Scheduler Docs ↩
-
Vixie cron 历史: Vixie cron 维基 ↩
-
Debian cron 手册: Debian CronHowto ↩
-
systemd.timer 手册: systemd 官方文档 ↩
-
Ubuntu Cron 指南: Ubuntu Cron 社区文档 ↩