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. POSIX 标准[1] 定义了 cron 的最小兼容规范,要求至少支持 *,- 符号。
  2. Linux 系统中的 cron 实现(如 Cronie)扩展了更多功能,例如步长值 (/) 和特殊字符串(@daily 等),具体可参考其官方文档[3]

二、时间字段的符号规则

每个时间字段支持以下特殊符号:

符号 说明 示例
* 匹配任意值 * 在分钟字段 = 每分钟
, 指定多个值 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 等)的来源

@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 官网

五、推荐验证工具与权威参考资料

  1. Crontab 手册页
    终端输入 man 5 crontab 查看完整语法,这是最直接的本地权威参考。

  2. Cron 表达式生成器

  3. 开源项目文档


六、总结

通过结合 POSIX 标准、Linux 手册页和主流实现(如 Cronie)的文档,用户可以精准掌握 cron 表达式的核心逻辑。对于高级用法(如 LW),需注意不同实现的兼容性,并优先参考官方资源。


参考资料

[1] POSIX Standard: Cron 定义
[2] Linux man 5 crontab 手册页
[3] Cronie 官方文档: GitHub Wiki
[4] IBM Cron 参考: Cron 格式说明
[5] Quartz Cron 语法: Quartz Scheduler Docs
[6] Vixie cron 历史: Vixie cron 维基
[7] Debian cron 手册: Debian CronHowto
[8] systemd.timer 手册: systemd 官方文档
[9] Ubuntu Cron 指南: Ubuntu Cron 社区文档