Linuxにおけるcronのサマータイム対応はどうなっているのか?2時間サマータイムは大丈夫?

シェアする

Voiced by Amazon Polly

2時間のサマータイム。世界的に見てほとんど前例がありませんが、日本が導入しようとしています。オリンピックのためだけに導入するべきなのか甚だ疑問なのですが。
しかし、このサマータイムで起こりえるのがバッチ処理が行われなかったり、二重に実行される問題。Linuxに搭載されているcronでは、このような問題には対処されているのでしょうか。

広告



cron自体は、3時間未満のサマータイムが考慮されている

現行で使用されているLinuxに含まれているcronでは、3時間未満のサマータイム(DST)が考慮されています。
従って、Linuxにおいてcronを使用したバッチ処理を行う場合はサマータイムによる二重実行や実行失敗を考慮する必要はあまりありません。

Daylight Saving Time and other time changes
Local time changes of less than three hours, such as those caused by
the Daylight Saving Time changes, are handled in a special way. This
only applies to jobs that run at a specific time and jobs that run with
a granularity greater than one hour. Jobs that run more frequently are
scheduled normally.

If time was adjusted one hour forward, those jobs that would have run
in the interval that has been skipped will be run immediately. Con‐
versely, if time was adjusted backward, running the same job twice is
avoided.

Time changes of more than 3 hours are considered to be corrections to
the clock or the timezone, and the new time is used immediately.

1時間を超える間隔で実行されるcronジョブに関しては、サマータイム実施時に特別な配慮がなされます。
サマータイム開始時は、そのスキップされた時間のcronジョブがまとめて実行されます。サマータイム終了時は、時間が逆行した部分に関しては二重に実行されないように手配されます
なお、3時間以上の変更が起きた場合は通常の時刻変更としてみなされ、このような配慮は為されません。また、1時間以下の間隔で実行するcronジョブに関しては通常通り実行されます。

cronは大丈夫そうだけど

バッチ処理をcronに頼らず、独自実装しているケースでは時間のスキップや逆行時に対応できない可能性はあります。
あくまでcronジョブを使う場合に対応されているのであって、アプリケーションレベルで対応しているかどうかは別問題です。また、実際に2時間サマータイムが導入された結果、cron以外で影響が起きるケースも考えられるため楽観視はできません。