如何设置22:30至23:00每5分钟执行一次的Cron任务?
Cron表达式问题分析与修正
原表达式错误原因
你写的0 30,0/5 22 ? * * *问题出在分钟字段的规则逻辑:
0/5表示从0分开始,每5分钟执行一次,对应22:00、22:05、22:10……22:25这些时间点- 加上
,30后,规则变成“22点的0/5分节点 + 30分节点”,最终会触发22:00到22:55之间所有5分钟间隔的时间点,和你预期的22:30起步完全不符。
正确配置方案
根据你的需求(22:30开始到23:00结束,每5分钟执行一次),分两种场景处理:
场景1:仅执行22:30、22:35……22:55(不含23:00)
直接用分钟起始点加步长:
0 30/5 22 ? * * *
解释:30/5表示从22:30开始,每5分钟执行一次,刚好覆盖22:30、22:35、22:40、22:45、22:50、22:55这几个时间点。
场景2:包含23:00(最后一次执行在23:00)
需要拆分规则,覆盖22:30-22:55的间隔点,再加上23:00的单次执行:
0 30/5 22 ? * * * 0 0 23 ? * * *
如果你的调度系统支持合并表达式,也可以写成:
0 0,30-55/5 22,23 ? * * *
(注:这个合并表达式仅保留22点的30-55/5分,以及23点的0分,避免23点其他分钟触发)
内容的提问来源于stack exchange,提问作者Thinker-101
相关产品推荐
相关产品推荐

