【问题标题】:How to run a cron job at every 5 hour interval如何每隔 5 小时运行一次 cron 作业
【发布时间】:2018-10-17 11:54:54
【问题描述】:

如何每隔 5 小时运行一次Cron 作业?

我试过了

0 */5 * * * /path/to/script/script.sh (Not necessarily a shell script)

但这个expression 的问题是它会在每个5 hour 运行,但时钟会在每天午夜00:00:00 重置。

说明:如果作业在午夜00:00:00 执行,那么以下将是执行时间

00:00:00, 05:00:00, 10:00:00, 15:00:00, 20:00:00

20:00:00 之后,作业将在00:00:00 执行,这比指定的早1 hour

但我的要求是作业应该每隔 5 小时运行一次,并且不应该在午夜重置

因此,如果作业在午夜 00:00:00 开始,则以下应该是执行顺序。

00:00:00, 05:00:00, 10:00:00, 15:00:00, 20:00:00, (Day 1)
01:00:00, 06:00:00, 11:00:00, 16:00:00, 21:00:00, (Day 2)
02:00:00 ...                                      (Day 3)

如何通过Cron实现以下功能? 任何帮助将不胜感激。

【问题讨论】:

  • 投反对票的原因?

标签: linux cron cron-task


【解决方案1】:

this forum post on unix.com 的一个选项每小时运行一次,然后添加到您的脚本中:

time_ct=$(cat /tmp/cron_time_ct)
if [ $time_ct -lt 5 ]
   then
     echo "Not yet time"
     time_ct=$((time_ct+1))
     echo $time_ct > /tmp/cron_time_ct
     exit
   else
     time_ct=0
     echo $time_ct > /tmp/cron_time_ct
fi
# rest of your task

我做了类似的“每隔一个星期一”类型的逻辑。每个星期一运行脚本,并且只允许在脚本中的每个其他脚本上执行。

【讨论】:

  • 你能解释一下吗?这是特定于 shell 脚本的吗?
  • 没有。这在顶部的/path/to/script/script.sh 中。您想每隔一小时踢一次该脚本,顶部的这段脚本将检查自上次运行以来是否已经 5 小时。如果是,那么它允许脚本的其余部分执行,如果不是,它会“退出”并死掉。
  • 只需0 * * * * 即可在每小时的最高峰运行。
  • 不完全是,不。 crontab 行是0 * * * * /path/to/script/script.sh,然后编辑script.sh 以包含上面的代码。就像这个新代码驻留在 crontab 正在执行的脚本中一样。
  • 现在......这有点像泡菜。选项 1:在 jar 中实现这个逻辑(假设你有源代码和所有这些)。选项 2:制作一个执行 jar 的 shell 脚本,并将此代码粘贴在该脚本的顶部。那么执行就像Crontab every hour >>> NewSCript.sh >>> Jar file。不漂亮,但完全合理。
猜你喜欢
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2011-03-20
  • 1970-01-01
  • 2018-02-18
  • 2013-11-27
相关资源
最近更新 更多