crondは夏時間+1時間の変更を処理しますか?


16

先週末、時刻を02:00から03:00に変更する必要がありました。

質問: 02 :30に cronjobがあった場合はどうなりますか?

crondはスケジューリングのための非常に古いソリューションであり、おそらくそれを処理する必要がありますが、方法はわかりません。

回答:


18

おそらくcronの実装に依存しますが、一般的なVixie cronのマニュアルには次のように記載されています。

その後、cronは毎分起動し、保存されているすべてのcrontabを調べ、各コマンドを現在の分で実行する必要があるかどうかを確認します。

そして

時計の変更が3時間未満の場合(夏時間の開始時と終了時など)、特別な考慮事項があります。時間が進んだ場合、スキップされた時間内に実行されていたジョブは、変更後すぐに実行されます。逆に、時間が3時間以内に後退した場合、繰り返し時間に該当するジョブは再実行されません。

特定の時刻に実行されるジョブ(@hourlyとして指定されておらず、時間または分指定子に「*」が指定されていないジョブ)のみが影響を受けます。ワイルドカードで指定されたジョブは、新しい時間に基づいてすぐに実行されます。

DSTの変更は3時間未満であったため、プログラムは午前3時過ぎに実行されます

これがVixieのcron固有の動作であるかどうかはわかりませんが、これが80年代にPDP-11がどのように機能したかを思い出すようですが、よくわかりません。


2
うわー、80年代からの知識-脱帽!
アイザック

経験則:年に一度、その時間帯のcronは実行されません。1年に1回、cronが2回実行されます。当然:これは常に正しいとは限りません。関連:ローカルタイムゾーンの使用をやめる!
tedder42 16

@ tedder42は参照を提供してください、あなたの主張はcronのドキュメントと実際の動作の両方に矛盾します。
アントン


この逸話的なケースは午前2時と午前3時を参照しており、午後2時30分を指す質問とは無関係です。あなたの参考文献は興味深い(古い)行動かもしれませんが、私の経験とは一致しません。また、タイムゾーンなしでサーバーを実行すると、独自の問題があります。
アントン

2

最善の解決策は、ハードウェアクロックをUTC(協定世界時)、別名GMT、またはズールー時間に設定してコンピューターを実行し、夏時間を許可するようにローカルタイムゾーンを設定するだけで時刻の表示方法を変更することです。引き継ぐ時間。

SUSE Linux、およびおそらく他のほとんどの場合、ハードウェアクロックシステム->環境->クロック-> HWCLOCKが-uフラグを使用してUTCに設定され、タイムゾーンがシステムの場所に設定されている場合、自動的にローカル時刻が表示されますDSTの修正を行います。

これには多くの利点があります。

  • DST変更のクロックを手動で再度調整する必要はありません。
  • CRONタブはUTC時間に保存され実行されます
  • ログなどのファイルがDSTの終了前の01:30に書き込まれ、DSTの終了後の01:20に別のファイルが書き込まれる場合、ファイルのタイムスタンプはUTCであり、表示時に現在のタイムゾーンに基づいて表示用に翻訳されただけです。

詳細についてman hwclockは、端末に入力してください。


2
マイナーなピック。UTCは「ユニバーサル時定数」ではありません。UTCは協定世界時を意味します
-fpmurphy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.