按 ⌘K 切换工具
TIME
Crontab表达式编辑器
解析Crontab表达式并预览下次执行时间。
§01 关于此工具
概述
多数 cron 工具告诉你的是表达式能不能解析。而人们真正想知道的是它什么时候会触发,以及它是不是比自己本来打算的跑得更勤。
这个编辑器把五个字段各自用文字读回来,然后把接下来七天画成一张按小时统计触发次数的热力图。一个你本以为每晚只跑一次的任务,要是每个小时都亮着,一眼就能看出来——远早于它把日志填满。
使用方法
- 输入一个表达式,或者从预设里挑一个开始改。
- 读五张字段卡片——每张显示原始记号、它的含义,以及它匹配多少个值。
- 看热力图。每一行是一天,每一列是一个小时;格子越亮,表示那个小时里触发次数越多。
- 旁边是精确的下几次运行时刻,以及各自距现在还有多久。点任意一行可复制 ISO 8601 时间戳。
- 把顶部在你的时区和 UTC 之间切换,就能用服务器真正使用的那个时钟去读同一份日程。
示例
*/15 9-17 * * 1-5——工作日的办公时段内每 15 分钟一次。热力图上周一到周五是实心的一整块,周末是空的。0 3 * * *——每晚 03:00。每行只有一个亮格。0 0 13 * 5——这就是那个坑:它会在每月 13 号以及每个周五触发,而不是只在「13 号又恰好是周五」的那天。两个「日」字段都被限定时,工具会给出警告。
说明
五个字段依次是分、时、日、月、星期。星期接受 0–7,其中 0 和 7 都表示周日。
预览会向前搜索最多两年。一个在这个窗口里从不触发的表达式——比如 2 月 30 日——工具会明确这样告诉你,而不是给出一个没有任何解释的空列表。
FAQ
显示的时刻用的是哪个时区?
你选哪个就是哪个。cron 本身没有时区概念——它按运行它的那台主机的本地时钟触发,所以顶部可以在你自己的时区和 UTC 之间切换,用那个时钟去读整份日程。如果你的服务器跑在 UTC 而你不在,这个开关就是差别所在。
工具为什么会就「日」和「星期」两个字段给出警告?
因为 POSIX cron 在这里的行为出人意料:当两个字段都被限定时,任意一个匹配它就触发,而不是两个都匹配才触发。所以 0 0 13 * 5 会在每月 13 号跑,也会在每个周五跑。而其中一个是 * 时,才是通常的「与」逻辑。
支持 @daily 和月份、星期的英文名吗?
支持——@yearly、@annually、@monthly、@weekly、@daily、@midnight 和 @hourly 都会被展开,mon-fri、jan 这样的名字也能用。@reboot 是故意不接受的:它在开机时触发,因此没有日程可以预览。
六个字段的表达式呢?
那是 Quartz 和 Spring 用的秒级方言,不是 POSIX cron。工具会明确指出这一点,而不是悄悄把字段读错。