4時間から1秒ごとにcronjobを実行する方法

4時間から1秒ごとにcronjobを実行する方法

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

関連情報