我在这里看到了很多与配置 CronExpressions 相关的问题。但它们似乎都有确切的小时(未指定分钟)作为运行的时间窗口。
有没有办法配置 CronExpression 以使其在每天上午 7:37 至晚上 9:13 之间每 5 分钟运行一次?配置上午 7 点至晚上 9 点很简单。但我似乎无法弄清楚是否有办法(也许甚至不支持)按照更详细的时间表运行。
我有一个应用程序,允许用户指定自定义时间表。现在我正在四舍五入到最接近的“整小时”,因为我似乎无法弄清楚如何计算具体时间。
例如,这是可行的
0 0/5 2-16 ? * 1-7 //每周每天凌晨 2 点到下午 4 点之间每 5 分钟运行一次
那么如果我想运行,表达式会是什么呢:
凌晨 2:19 到下午 4:13 之间每 5 分钟一次?
或者这根本不可能(除了创建多个 CronExpressions 并使其变得非常混乱之外)
任何帮助,不胜感激!
答案1
如果您输入,man 5 crontab
您将看到以下示例:-
# Run on every second Saturday of the month 0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
将其应用到您的案例中:-
0 0/5 2-16 ? * 1-7 test $(date +\%R) \> 02:19 -a $(date +\%R) \< 16:13 && YourCommand
或者,如果YourCommand
是一个脚本,您可以将时间测试合并到其中。
请注意,由于该命令是在整点后 5 分钟的倍数处调用的,因此对>
和的测试>=
是等效的(同样<
和<=
);否则,您可能需要调整测试边界(例如>= 02:18
),因为test
不支持字符串比较中的>=
和<=
。