cron 表达式
生成器
粘贴任意 cron 表达式,用大白话读懂它,并按"你的"时区算出接下来 5 次运行时间。或切换到构建模式,点几下就拼出一份时间表,无需背下那五个字段。
cron 转中文,中文转 cron
在 Yetty,那些无聊的周期性任务,备份、SEO 检查、监控,就是平台的一部分。你只管发布;它负责运行。
那些会咬到
每个人的坑
是服务器的时钟,不是你的
Cron 按机器的时区触发,通常是 UTC。这里的预览用"你的"时区,方便你推理,但部署前务必查清服务器本身用的是哪个时钟。
日期字段是 OR
当每月第几天和星期几都被设置时,经典 cron 在任一匹配时运行,0 9 13 * 5 会在每月 13 号和每个星期五触发,而不仅是 13 号星期五。本工具忠实地预览这条 OR 规则。
步长对齐到零
*/15 表示时钟上的第 0、15、30、45 分钟,而不是"从任务安装那一刻起每 15 分钟"。若需要偏移,请明确写出:7,22,37,52。
夏令时可能跳过或重复
当时钟向前跳时,02:30 的任务那晚可能根本不运行;当时钟回拨时,有些 cron 会运行两次。把关键任务安排在切换窗口之外,或使用 UTC。
星期日既是 0 也是 7
两者对星期几都被接受,表示同一天。名称也可以:sun、mon、tue……以及像 mon-fri 这样的范围。本页全都能识别。
经典 cron 没有秒
五个字段从分钟开始。若某个工具显示六个字段,第一个就是秒(Quartz 和一些框架),是另一种方言。请在这里粘贴 5 字段表达式。
大家也在问
cron 表达式里的 * * * * * 是什么意思?
五个星号表示"每天每小时的每一分钟"。五个字段依次是:分钟 (0-59)、小时 (0-23)、每月第几天 (1-31)、月份 (1-12)、星期几 (0-7,其中 0 和 7 都是星期日)。字段里的星号表示"任意值",所以 30 2 * * 1 读作:分钟 30、小时 2、每月任意一天、任意月份、在星期一;用大白话说,就是每周一 02:30。
为什么我的 cron 任务在错误的时间运行?
几乎总是时区问题。Cron 按服务器时钟运行,而服务器常常设为 UTC,你却在用本地时间思考。设为 9 0 * * * 的任务会在 UTC 的 00:09 触发,也就是以色列冬季的 02:09、夏季的 03:09,因为夏令时会移动你的偏移量,而 UTC 从不移动。本页按"你的"时区显示运行时间供你核对;部署前,请查清你的服务器或调度器实际用的是哪个时区。
如果我在 cron 里同时设置每月第几天和星期几会怎样?
一个著名陷阱:当两个字段都被限定时,经典 cron 在"任一"匹配时就运行任务,是 OR,不是 AND。所以 0 9 13 * 5 并不表示"13 号星期五 09:00";而是每月 13 号和每个星期五,都在 09:00。本工具在预览中实现同样的 OR 规则,所以下次运行列表会准确显示你的服务器真正会做什么。