Cron
开发类 Unix 定时任务表达式
Cron 是 1975 年随 Unix 诞生的定时任务系统,其"分 时 日 月 周"五字段表达式(crontab 第 5 版,AT&T System V/POSIX IEEE 1003.1)成为云定时器与 CI 触发器的通用语法。
历史与语法
Cron 由 Ken Thompson 引入 Unix(1974–1975),现行五字段语法(分钟 0–59、小时 0–23、日 1–31、月 1–12、星期 0–7)自 System V 与 POSIX(IEEE 1003.1)固化。特殊字符:* 任意、, 枚举、- 区间、/ 步进;*/5 在分钟位即每 5 分钟。注意"日"与"周"同时非 * 时的 OR 语义是 POSIX 特性,常令人意外。
方言差异
Vixie cron(1987,Paul Vixie)增加 @reboot/@daily 简写;Quartz(Java 系)是六到七字段(多出秒与可选年份)且语义不同;Spring、GitHub Actions、云厂商调度器各取其一。跨平台抄表达式前必须确认方言——"0 0 * * *"在 Quartz 里语法都不合法。
可读化与最佳实践
crontab.guru 类工具把表达式翻译成自然语言,交付前先"反向确认"一遍。生产环境建议:任务幂等(重叠触发不出错)、记录上次运行、时区显式声明(cron 按 UTC 还是本地时区因系统而异)。