在特定时间之间运行 CronExpression(但不是在整点)

在特定时间之间运行 CronExpression(但不是在整点)

我在这里看到了很多与配置 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不支持字符串比较中的>=<=

相关内容