关于Cron表达式生成
这个工具把分、时、日、月、周五个字段拆成可点选的组合,选完直接拼出标准 cron 表达式,同时把表达式翻译成一句人话,例如「每天凌晨 2 点执行」;反过来粘贴已有表达式,也能逐字段解析出每一位的含义。日字段与周字段同时指定时,行为不一致:Linux crontab 按 OR 处理,任一条命中即执行,Quartz 则要求其中一个写 ?。*/5 表示每 5 个单位,0/5 从 0 起每 5 个,5/5 从 5 起,起点不同结果就不同;@daily、@reboot 这类别名可以少写字段。表达式本身不带时区信息,实际执行时间取决于服务器或容器时区;标准写法最少 5 位,Quartz 是 6 到 7 位,多出秒和年。
Cron表达式生成怎么用
- 在分字段选择步长,比如 */5 表示每 5 分钟触发一次。
- 把时字段填 2、日字段填 *,右侧释义会显示「每天凌晨 2 点」。
- 日和周都指定时,Linux 取 OR,Quartz 要把其中一个改成 ? 才会通过校验。
- 粘贴已有表达式到解析框,逐字段核对星号、区间、列表与步长的写法。
- 对照本地时区看下一次执行时间,再换算到服务器时区落进 crontab。
使用提示
- 本工具只做表达式生成、释义,并按本地时区推算下一次执行时间,不承担服务端定时任务调度。
- 全部计算在浏览器本地完成,表达式内容和解析过程不会发往任何服务器。
- 生成前先确认位数:标准 crontab 5 位,Quartz 6 到 7 位,字段顺序不同不能混用。
Cron表达式生成常见问题
cron 表达式里的日字段和周字段能同时写具体值吗?
要分平台看。Linux crontab 把日和周当作 OR 关系,两个字段同时指定时,只要其中一个命中就会执行,容易比预期多跑几次。Quartz 则不允许两个同时写具体值,必须把其中一个写成 ?,让调度器只按剩下的那个字段判断。跨平台迁移时这两个字段要重点核对。
*/5、0/5、5/5 三种写法有什么区别?
都表示步长,但起点不同。*/5 等价于 0/5,从 0 开始每 5 个单位执行一次;5/5 从第 5 个单位开始每隔 5 个执行,例如分钟字段里是 5、10、15 这样走,不会包含 0 分。选步长时先确认是否包含起点那个值,否则触发时刻会整体偏移。
cron 表达式能指定时区吗?
表达式本身不携带时区信息,触发时刻由运行它的服务器或容器时区决定。同一份表达式放在 UTC 和东八区的机器上,实际执行时间会差 8 小时。容器里尤其要注意基础镜像默认多为 UTC,要先把容器时区或宿主时区对齐,再按那个时区校对下一次执行时间。
@daily、@reboot 这些别名和标准写法怎么换算?
@daily 等价于 0 0 * * *,@hourly 是 0 * * * *,@weekly 是 0 0 * * 0,@monthly 是 0 0 1 * *。@reboot 比较特殊,表示每次系统启动时执行一次,没有对应的五位表达式,一般只在 crontab 里可用,Quartz 不支持这类别名。