Crontab生成器

验证并生成crontab,并获取cron计划的易读描述。

Crontab生成器是什么

左边点选、右边出表达式,也可以直接粘一条现成的 cron 反解析回面板,同时给出人类可读的说明和接下来 20 次执行时间。写定时任务最怕字段顺序写反、或者搞错星期里 0 和 7 的含义,贴进 crontab 之前先在这里确认一遍语义。

所有计算都在你的浏览器本地完成,输入的内容不会上传到服务器。

怎么用Crontab生成器

  1. 左侧「字段配置」按 分钟 / 小时 / 日 / 月 / 周 五个页签逐项选,默认是工作日早上九点,即 0 9 * * 1-5
  2. 每个字段有四种填法:每次(*)、间隔(*/N)、周期(a-b)、指定(勾选具体值),选完右侧表达式立刻更新
  3. 右侧「生成结果」把五个字段拆成小块显示;要整体改写就点开表达式框直接改,再点「反解析到界面」同步回左侧面板
  4. 下方给出人类可读描述,以及接下来 20 次执行时间(按所选时区推算)
  5. 要切成 AWS 6 段、调整描述的读法或换时区,展开底部「高级选项」折叠区
  6. 最底部是 * - , / ? L W # 的语法速查表

示例

输入

0 9 * * 1-5

输出

At 09:00, Monday through Friday(工作日早上九点)

描述文字为英文,执行时间按所选时区列出接下来 20 次

常见问题

*/10 * * * * 和 10 * * * * 一样吗?

完全不一样。带斜杠的是步长,*/10 表示每 10 分钟一次;不带的 10 表示每小时的第 10 分钟执行一次。面板上「间隔」和「指定」就是这两种,别点错。

「周期」和「间隔」有什么区别?

「周期」是 a-b 区间,比如 9-18 表示只在 9 点到 18 点之间每次都执行;「间隔」是 */N 步长,比如 */6 表示从 0 开始每 6 个单位执行一次。两者可以叠成 9-18/6 这种写法,但面板上需要先选一种再手改表达式。

星期里 0 和 7 都表示周日吗?

标准 cron 里 0 和 7 都指周日。本工具面板统一用 1~7,1 是周一、7 是周日;「日期从 0 开始」开关只影响描述文字的读法,不改变执行时间。

为什么我写的 @daily 被判无效?

@daily、@hourly、@reboot 这类快捷写法只在标准 5 段模式下有效,切到 AWS 模式就不认识了,需要写成对应的 6 段表达式。粘进表达式框点反解析时,宏会自动展开成 5 段写法。

想每分钟执行一次怎么写?

写 * * * * *。另外标准模式还支持可选的秒字段,即 6 段写法,第一位是秒。

小提示

  • 周字段默认写数字 1~7(1 是周一、7 是周日),在「周字段写法」里可以切成英文 MON~SUN,两种写法生成的是同一条表达式
  • 表达式里不补零:05 和 5 等价,左侧勾选框显示成 05 只是为了对齐好看
  • 含 L / W / # / ? 的字段没法用面板搭出来,会被标成「自定义」,请直接在右侧表达式框里手写
  • 执行时间按你选的时区推算,而服务器通常是 UTC,核对前先切到 UTC,否则会差整整 8 小时
  • 人类可读的描述是英文的(由 cronstrue 库生成),「详细」开关关掉后只留核心时间,不再输出整句
  • AWS 模式使用 6 段表达式(带年份),可视化面板不适用,也无法预览执行时间,只能看语法速查表后手写

同类开发工具