为什么 cron 中的 */45 不代表每 45 分钟一次
09:00、09:45、10:00。整点边界解释了意外的额外运行。
*/45 * * * * 在每小时的第0分钟和第45分钟运行。间隔时间在45分钟和15分钟之间交替。它不会在上一次运行后等待45分钟。
Cron 按时钟匹配字段。分钟字段的步进在小时变更时重新开始。这个区别在安排报告、数据刷新或清理任务时很重要。
检查小时边界
打开cron 构建器,选择粘贴表达式,输入 */45 * * * *。将计划时区设置为 UTC。在预览时间选择2026年11月6日08:59。手机上切换到即将运行查看列表。
前五个匹配时间为:
| UTC 运行时间 | 与上次匹配间隔 |
|---|---|
| 09:00 | — |
| 09:45 | 45分钟 |
| 10:00 | 15分钟 |
| 10:45 | 45分钟 |
| 11:00 | 15分钟 |
点击显示更多5项可扩展预览。这里日期固定,方便你复现我们的运行记录;你也可以用任何普通的 UTC 日期查看相同的小时边界行为。预览只列出所选时间之后的匹配。
步进保持在字段内
分钟字段范围是0到59。步进45选择0和45,下一小时又从0开始。相比之下,*/15 * * * * 选择0、15、30和45,产生均等的15分钟间隔(UTC)。
crontab 手册描述了这种字段内行为。构建器支持五个字段:分钟、小时、日期、月份和星期。带秒的六字段表达式属于不同方言,这里不支持。
预览上方的友好描述有用,但使用步进表达式前请务必检查实际时间戳。特别是查看跨小时边界的两次运行。
如果需要45分钟的时钟调度
要固定 UTC 时间点在00:00、00:45、01:30、02:15、03:00等,四个表达式可以覆盖三小时循环模式:
0 0-23/3 * * *
45 0-23/3 * * *
30 1-23/3 * * *
15 2-23/3 * * *
分别预览每个表达式。工具一次只处理一个表达式,不会安装任务。你的调度器中配置这四条表达式调用同一任务,且都用 UTC。这里仅是调度表达式:Unix crontab 还需在每条后面加命令,托管服务可能用不同触发设置。
下载四个表达式。合并预览显示09:00、09:45、10:30、11:15和12:00,匹配间隔45分钟。这是时钟调度,不是从任务完成后计时的延迟。
让调度匹配任务需求
如果需求是“任务完成后等待45分钟”,应使用支持该间隔的调度器或队列。cron 步进和四条表达式的时钟调度都不会等待上一次运行结束。需要自行决定如何避免任务重叠,尤其是任务耗时可能超过调度间隔的情况。
预览中的时区设置不会随复制的表达式一起带走。请在目标调度器中重新设置。此例用 UTC 避免夏令时变更影响;本地时间调度需额外检查夏令时切换。
结果记录由工具实际解析器于2026年11月6日生成。它验证了交替间隔和四条表达式共65次匹配。仅作计算验证,不代表后台任务已安装或运行。