每45分钟执行且仅在10点至22点运行的crontab配置是否正确?
Crontab定时配置问题解答
结论
你当前使用的 */45 10-21 * * * 配置不完全符合需求,存在两处问题。
问题说明
1. 间隔规则不符合要求
*/45 是「每小时内从0分开始算,每隔45分钟触发」,并不是全局间隔45分钟。实际触发时间为每小时的0分、45分,会出现间隔不足45分钟的情况:
- 例:10:45触发后,下一次触发时间是11:00,仅间隔15分钟,不符合要求。
2. 时间覆盖范围不符合要求
10-21 代表小时范围为10点到21点,最后一次触发时间为21:45,如果你要求覆盖到晚上10点(22:00),范围存在缺失。
修正方案
方案一:接受每小时固定0分、45分执行
如果允许按小时对齐的触发节奏,只需要调整分钟和小时范围即可:
0,45 10-22 * * * 你的执行命令
该配置触发时间为:10:00、10:45、11:00、11:45 ... 22:00,覆盖到晚上10点整。
方案二:要求严格间隔45分钟执行
如果必须保证两次执行间隔严格为45分钟,需要拆分多条规则实现:
0 10-22/3 * * * 你的执行命令 45 10,13,16,19,22 * * * 你的执行命令 30 11,14,17,20 * * * 你的执行命令 15 12,15,18,21 * * * 你的执行命令
该配置触发时间为:10:00、10:45、11:30、12:15、13:00 ... 22:00,全程间隔45分钟,完全符合要求。
内容的提问来源于stack exchange,提问作者Mahesh Shinde
相关产品推荐
相关产品推荐

