Cron表达式解析
看懂 Cron 表达式什么时候执行。
这个工具能做什么
把一条五段式 Cron 表达式填进去,工具会逐段翻译成中文说明,并从当前时间往后推算出接下来 5 次真正会触发的时间点。手写 crontab 时字段顺序、步进、范围很容易记混,像 "0 */2 * * 1-5" 这种混着 * / - 的写法也很难一眼判断到底几点跑、一天跑几次。与其部署上去等它没按预期执行再回头排查,不如在这里先把 cron 表达式的含义和 cron 下次执行时间核对一遍。
五段从左到右分别是分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7,其中 0 和 7 都表示周日)。crontab 解析的核心是把每一段展开成一个「允许值集合」:* 是整段全集,a-b 是闭区间,*/n 是从起点开始按步长取值,逗号则把多个值或区间并列起来。推算下次执行时,从当前分钟起逐分钟向后试探,只有五段同时命中的那一刻才算一次触发。这里有个常被忽略的规则:当「日」和「周」都不是 * 时,主流的 Vixie cron 走的是「或」逻辑——两段任意一段满足当天就会执行,而不是要求两者同时满足。
举两个常见的例子。"0 2 * * 1" 会被翻译成「每周一凌晨 2:00 执行」,接下来几次时间一列出来就知道有没有配对;"*/15 9-18 * * *" 则是「每天 9 点到 18 点之间,每 15 分钟一次」,适合盯接口、拉数据这类白天高频的任务。做数据库备份、日志切割、定时对账时,把定时任务表达式贴进来先验证一遍,比线上没跑或者跑错时间再回头查省事得多。核对时重点看下次执行时间落在哪几个点,往往一眼就能发现字段写反了。
要注意标准 crontab 只有五段、最小粒度是分钟,本身不支持秒;带秒的六段式是 Quartz、Spring Scheduler 那一套语法,二者不要混用。时区上,页面按你本机浏览器所在时区推算,而服务器上的 crontab 用的是服务器时区(或 CRON_TZ 设置),跨时区部署时下次时间可能差好几个小时,实际以服务器为准。还有个易错点:*/7 落在「日」字段并不等于「每隔 7 天」,因为每个月都会从 1 号重新起算。整个 cron 在线解析都在浏览器本地完成,填入的表达式不会上传。
Cron表达式解析是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“cron表达式”、“crontab解析”、“cron在线”,说的都是这个。
常见使用场景
- 核对备份脚本的 crontab 有没有配错时间
- 看懂同事写的 "0 */2 * * 1-5" 到底几点跑
- 上线前验证定时任务接下来几次执行时间
- 确认 */15 是不是真的每 15 分钟触发一次
- 排查定时任务没按预期时间触发的原因
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。