Crontab生成器
验证并生成crontab,并获取cron计划的易读描述。
Crontab生成器是什么
左边点选、右边出表达式,也可以直接粘一条现成的 cron 反解析回面板,同时给出人类可读的说明和接下来 20 次执行时间。写定时任务最怕字段顺序写反、或者搞错星期里 0 和 7 的含义,贴进 crontab 之前先在这里确认一遍语义。
所有计算都在你的浏览器本地完成,输入的内容不会上传到服务器。
怎么用Crontab生成器
- 左侧「字段配置」按 分钟 / 小时 / 日 / 月 / 周 五个页签逐项选,默认是工作日早上九点,即 0 9 * * 1-5
- 每个字段有四种填法:每次(*)、间隔(*/N)、周期(a-b)、指定(勾选具体值),选完右侧表达式立刻更新
- 右侧「生成结果」把五个字段拆成小块显示;要整体改写就点开表达式框直接改,再点「反解析到界面」同步回左侧面板
- 下方给出人类可读描述,以及接下来 20 次执行时间(按所选时区推算)
- 要切成 AWS 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 段表达式(带年份),可视化面板不适用,也无法预览执行时间,只能看语法速查表后手写