我有来自 API 的数据,我想调用它并每 4 小时将数据转储到我的数据库中(当天数据)。我使用了以下内容:
0 */4 * * *
我的报告中的数据缺少一些值,我认为 cronjob 的调用方式如下:
today 00:00:00 -> should return nothing for today results
today 04:00:00 -> should return data for today
....
today 20:00:00 -> should return data for today
tomorrow 24:00:00 -> should return data for today, but this is tomorrow !
所以我现在想这样称呼它:
today 00:00:00 -> should return nothing for today results
today 03:59:59 -> should return data for today
....
today 19:59:59 -> should return data for today
tomorrow 23:59:59 -> should return data for today, but this is tomorrow !
我无法实现这个 cronjob。或者有更好的方法吗?
答案1
秒和负时间在 crontab 中是不可能的。只需在前一小时的第 59 分钟等待 59 秒即可。示例 crontab:
#
# minute 0-59
# hour 0-23
# dom 1-31
# mon 1-12 (or names)
# dow 0-7 (0 or 7 is Sun, or use names)
#
59 23,3,7,11,15,19 * * * sleep 59 && /bin/datadump
答案2
不幸的是,cron
它的设计更多的是模式识别而不是算术,所以类似的东西-1 0 /4 * * *
是行不通的。您可以使用逗号手动指定每小时,因此这应该会得到所需的结果:
59 59 3,7,11,15,19,23 * * *
不过,在整点之前运行一秒钟有点过于信任您的数据库。我个人会再给它几秒钟的时间来结束(否则它仍然会转储明天的数据)。