Cron 表达式生成器

步长
分钟
* * * * *

未来执行时间

Cron 表达式说明

Cron 表达式格式

一、Cron 表达式的基本结构(附权威来源)


一、Cron 表达式的基本结构(附权威来源)

一个标准的 cron 表达式由 5 个时间字段1 个命令字段组成,其定义遵循 Unix 和 Linux 系统的通用规范。根据 IEEE Std 1003.1-2017(POSIX 标准)1Linux 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 参考文档4Cronie 项目 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 实现可能存在细微差异,需参考对应文档:

实现名称特点官方资源链接
CronieRed Hat 系默认 cron,支持 @ 快捷方式Cronie GitHub
systemd通过 .timer 单元替代 cron(推荐新系统使用)systemd.timer 手册
fcron支持更复杂语法(如 @yearlyfcron 官网

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

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

  2. Cron 表达式生成器

  3. 开源项目文档


六、总结

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


Footnotes

  1. POSIX Standard: Cron 定义 2

  2. Linux man 5 crontab 手册页

  3. Cronie 官方文档: GitHub Wiki 2

  4. IBM Cron 参考: Cron 格式说明 2

  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 社区文档