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秒だけ待ってください。はいクローンタブ:
#
# 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 * * *
しかし、時間になる前の1秒前に実行するのは、データベースを信頼しすぎることです。個人的に、私は完了するためにさらに数秒を与えたいと思います(そうでなければ明日のデータはダンプされ続けます)。