每五分钟 cron 一次,持续三个小时

每五分钟 cron 一次,持续三个小时

我想设置 cron 在凌晨 4:30 每五分钟运行一次,持续 3 小时,然后它会在 7:30 停止执行,怎么做?这样可行吗?

*/5,30  4-7  *  *  *

答案1

您无法在单个 cron 行上指定所需的时间

# 4.30 - 4.59 evry 5 mins
30-59/5 4 * * * 
# 5.00 - 6.55 evry 5 mins
*/5 5-6 * * * 
# 7.00 - 7.30 evry 5 mins
0-30/5 7 * * * 

或者将类似的内容添加到你的 cron 中

*/5 4-7 * * *  [ "$(date +%H%M)" -gt 0429 -a "$(date +%H%M)" -lt 0731 ] && YourScriptHere

# $( ) = means run command inside and get the results, same as backticks `
# be careful with date, because you can also set your computers time with it.
# man date will give you list of %LETTER options to specifu
# %H = hour, %M = minutes,
#  -gt = greater than, -lt lessthan -a = and, && = continue execution if previous command 
# did not return error. 

答案2

我使用以下设置在我的服务器上进行了测试:

*/5,30 12-13 * * * /root/crontest > /var/log/crontest.log

其中 crontest 脚本如下所示:

echo "Running at:"`eval date +%Y-%m-%d-%H:%M`

输出如下:

Running at:2011-04-29-12:20
Running at:2011-04-29-12:25
Running at:2011-04-29-12:30
Running at:2011-04-29-12:35
Running at:2011-04-29-12:40
Running at:2011-04-29-12:45
Running at:2011-04-29-12:50

因此,基本上,您所设置的设置将在指定的小时之间每 5 分钟运行一次。30 所做的只是表示每 30 分钟运行一次,这已经是每分钟 5 次间隔的功劳了。因此,它不会限制 cron 仅在 0 到 30 分钟之间运行,然后在该间隔内每 5 分钟运行一次。

您可能能够通过如下方式限制来解决它:

*/5,0-30 12-13 * * * /root/crontest > /var/log/crontest.log

编辑:这也行不通,因为 , 表示 OR,所以它仍然每 5 分钟运行一次

如果这不起作用那么你可能必须通过以下方式解决它:

  • 处理脚本中的 5 分钟间隔
  • 将间隔从 4:30 - 7:30 更改为 4:00 - 7:00。

相关内容