下次执行
—
无匹配日期
上一次执行
—
过去 31 天内没跑过
未来 24 小时
0 次
按 本机 时钟
工具介绍
cron 难记的不是关键字,而是「这串数字下次到底是几点」。工具输入表达式后立刻做三件事:把每一段展开成实际命中的数字并给出中文含义;按你选的时区算出后面若干次执行的日期时间,附「3 小时后」这种相对提示;顺手把「日」和「星期」同时限定时 crontab 取「或」这类坑标出来。国内服务器常见的 UTC 与东八区错位,也能通过切到 UTC 一眼看出来。写完直接复制到 crontab -e、宝塔计划任务或 Spring 的 @Scheduled 上,不用再去翻手册。
怎么用
- 输入表达式,或点上方「工作日 09:00」「每 5 分钟」这类预设先看效果
- 在「执行时间表」核对未来几次执行时刻,怀疑时区不对就切到 UTC 再看一遍
- 需要看每一段展开成什么数字,切到「字段拆解」;报错信息会直接指出是第几段写错
- 复制「各调度器写法」里的表达式贴进 crontab -e 或 @Scheduled
常见问题
「日」和「星期」能同时填吗?
能填,但三种调度器结果不一样:Linux crontab(Vixie 实现)取「或」,任一命中就执行;Spring 的 CronExpression 取「且」,两个条件要同时满足;Quartz 规定两者必须恰好有一个写 ?。想要「每月 1 号或者每周一」,最稳的做法是拆成两条任务。
明明设了 9 点,服务器为什么 1 点才跑?
crontab 跟的是服务器时区,不是你的时区。用 timedatectl 或 date 确认一下;机器是 UTC 而你按北京时间写「0 9 * * *」,实际会在东八区 17 点触发。可以给任务加 CRON_TZ=Asia/Shanghai(部分实现支持),或者按 UTC 时间倒推 8 小时写表达式——本工具切到 UTC 模式就是帮你核对这件事。
*/5 和 5/10 有什么区别?
*/5 从 0 开始每 5 个一次,即 0、5、10……;5/10 表示从 5 开始每 10 个直到该字段上限,即 5、15、25、35、45、55。只写 5 就只是 5 这一个值。区间也能带步长,例如 9-18/3 是 9、12、15、18。
为什么 L、W、# 被判成语法错误?
这三个是 Quartz 与 Spring 的扩展写法,分别表示当月最后一天、最近的工作日、当月第 N 个周几,Linux crontab 并不支持,所以本工具按标准 cron 拒绝它们。真要用,就把表达式写成两条任务或用脚本判断日期,别指望 crontab 认。
5 段和 6 段都能算吗?
都能。5 段是标准 crontab:分 时 日 月 周;6 段最前面多一个「秒」,是 Spring @Scheduled 和 Quartz 的写法。工具会按段数自动判断,字段拆解表也会多出「秒」这一行。