47

Cronのジョブが午前2時に実行され、午前3時に実行されるようにスケジュールされている場合、これらのジョブは夏時間の影響を受けますか?

時刻が1時間戻ると、時刻は午前2:59:59から午前2:00:00に直接移動しますか?午前2時のジョブが2回実行され、午前3時のジョブが1回実行されるという意味ですか?または、時刻が最初に午前3:00:00に変更され、次に午前2:00:00に変更されて、両方のジョブが2回実行されますか?

時刻が1時間進むと、時刻は午前1:59:59から午前3:00:00になり、午前2時のジョブは実行されず、午前3時のジョブは1回実行されますか?または、時刻が2:00:00から3:00:00にシフトすると、両方のジョブが1回実行されますか?

要するに、私が疑問に思っているのは、時間を稼ぐと午前3時が1回か2回発生し、1時間を失うと午前2時がまったく発生しないということです。グーグルで見たとき、私はこれについて何も見つけることができませんでした。

4

2 に答える 2

46

答えは、使用しているcronのバリアント/拡張子によって異なります。一部のバリアントは夏時間を処理しないため、ジョブが欠落し、ジョブが2回実行されます。

Paul Vixie cronを使用している場合は、DSTの変更を処理します。cronのマニュアルページによると:

cronは毎分チェックして、スプールディレクトリのmodtime(または/ etc / crontabのmodtime)が変更されているかどうかを確認します。

さらに、夏時間に関して(2番目のパラグラフはあなたの答えを明確に説明しています)

夏時間およびその他の時間の変更

   Local time changes of less than three hours, such as  those  caused  by
   the  start or end of Daylight Saving Time, are handled specially.  This
   only applies to jobs that run at a specific time and jobs that are  run
   with  a    granularity  greater  than  one hour.  Jobs that run more fre-
   quently are scheduled normally.

   If time has moved forward, those jobs that would have run in the inter-
   val that has been skipped will be run immediately.  Conversely, if time
   has moved backward, care is taken to avoid running jobs twice.

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

したがって、タイムシフトが2:59:59または3:00:00になる可能性がある場合は常に、cronが状況を処理し、欠落したジョブのみを実行することでジョブの実行を処理し、すでに実行されているジョブの実行を回避します。

于 2012-11-02T15:56:34.113 に答える
1

明確にするために、それはあなたが住んでいる場所、cronジョブがどのようにスケジュールされているかによって異なります(面倒を見る必要があるUnix cronと、それ自体で面倒を見るJavaスケジューラー!)。

米国では、時計は現地時間の午前 2 時に変わります。春には、時計は午前 1 時 59 分から午前 3 時まで進みます。秋には、時計は午前 1:59 から午前 1:00 に戻ります

EU では、世界時間の午前 1 時に時計が変わります。春には、午前 0 時 59 分から午前 2 時まで時計が進みます。秋には、時計は午前 1:59 から午前 1:00 に戻ります

例: 2020 年 10 月 25 日の午前 1 時 30 分に Unix cron ジョブがある場合、ジョブは 2 回実行されます。

于 2020-10-25T13:43:45.300 に答える