異なるバージョンのCentOSで夏時間(DST)が無効になっていることを確認するにはどうすればよいですか?

異なるバージョンのCentOSで夏時間(DST)が無効になっていることを確認するにはどうすればよいですか?

CentOS 7および6をオペレーティングシステムとして使用する複数のサーバーがあります。以前は、DST時間が年に2回変更され、オペレーティングシステムが各サーバーで自動的に実行されました。
今、突然夏時間の政策を変更する法案が合格しました。 OSが以前のように時間を変更しないように、これらのサーバーでDSTが無効になっていることを確認したいと思います。中央タイムサーバーに基づいてこれらの変更を行うことを望みます。
CentOS 7では、このコマンドがDSTを有効にしていないことを確認できます。timedatectl status
出力:DST active: no

ただし、CentOS 6ではDSTが無効になっていることを安全に確認することはできません。どこでも検索しましたが、それを表示するコマンドやファイルが見つかりませんでした。それでは、CentOS 6でDSTが無効になっているかどうかを確認する方法は?

答え1

まず、現在のタイムゾーン設定が何であるかを確認する必要があります。環境変数が設定されている場合はTZタイムゾーンで、設定されていない場合はシステムのデフォルトのタイムゾーンがによって決定されます/etc/localtime

/etc/localtimeへのシンボリックリンクの場合、/usr/share/zoneinfo/...現在のタイムゾーンを確認するのは簡単です。リンク先のパス名は、実際のタイムゾーンを正確に識別します。

ただし、RHEL / CentOS 6では、ファイルはリンクではなく、タイムゾーンファイルの1/etc/localtimeつの実際のコピーである可能性が高くなります。/usr/share/zoneinfo/...1つの小さな問題:デフォルトの/etc/sysconfig/clockタイムゾーンで何を選択するかを知らせる可能性が高いです。オペレーティングシステムのインストール中/etc/localtimeただし、後で別のタイムゾーンファイルで上書きしてタイムゾーンを変更すると、/usr/share/zoneinfo/の情報が最新では/etc/sysconfig/clockなくなる可能性があります。

したがって、オペレーティングシステムのインストール後にタイムゾーンが変更された可能性がある場合は、/etc/localtimeこのファイルの内容を(推定)元の内容と比較する必要があります/usr/share/zoneinfo

. /etc/sysconfig/clock
diff /etc/localtime /usr/share/zoneinfo/$ZONE && echo "Confirmed: timezone is $ZONE." || echo "Despite appearances, timezone is NOT $ZONE."

タイムゾーンの正確な名前がわかったら、次のコマンドを使用して、そのタイムゾーンの既知の履歴と予想される将来のDST(およびその他)遷移イベントを表示できます。

zdump -v <timezone name>

このリストには、2499年頃までに年間2回のDSTコンバージョン(4行)が含まれる可能性があるため、リストを少し制限することをお勧めします。たとえば、

zdump -v -c 2020,2025 America/New_York

America/New_York  -9223372036854775808 = NULL
America/New_York  -9223372036854689408 = NULL
America/New_York  Sun Mar  8 06:59:59 2020 UTC = Sun Mar  8 01:59:59 2020 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar  8 07:00:00 2020 UTC = Sun Mar  8 03:00:00 2020 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  1 05:59:59 2020 UTC = Sun Nov  1 01:59:59 2020 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  1 06:00:00 2020 UTC = Sun Nov  1 01:00:00 2020 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 14 06:59:59 2021 UTC = Sun Mar 14 01:59:59 2021 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 14 07:00:00 2021 UTC = Sun Mar 14 03:00:00 2021 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  7 05:59:59 2021 UTC = Sun Nov  7 01:59:59 2021 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  7 06:00:00 2021 UTC = Sun Nov  7 01:00:00 2021 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 13 06:59:59 2022 UTC = Sun Mar 13 01:59:59 2022 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 13 07:00:00 2022 UTC = Sun Mar 13 03:00:00 2022 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  6 05:59:59 2022 UTC = Sun Nov  6 01:59:59 2022 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  6 06:00:00 2022 UTC = Sun Nov  6 01:00:00 2022 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 12 06:59:59 2023 UTC = Sun Mar 12 01:59:59 2023 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 12 07:00:00 2023 UTC = Sun Mar 12 03:00:00 2023 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  5 05:59:59 2023 UTC = Sun Nov  5 01:59:59 2023 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  5 06:00:00 2023 UTC = Sun Nov  5 01:00:00 2023 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 10 06:59:59 2024 UTC = Sun Mar 10 01:59:59 2024 EST isdst=0 gmtoff=-18000
America/New_York  Sun Mar 10 07:00:00 2024 UTC = Sun Mar 10 03:00:00 2024 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  3 05:59:59 2024 UTC = Sun Nov  3 01:59:59 2024 EDT isdst=1 gmtoff=-14400
America/New_York  Sun Nov  3 06:00:00 2024 UTC = Sun Nov  3 01:00:00 2024 EST isdst=0 gmtoff=-18000
America/New_York  9223372036854689407 = NULL
America/New_York  9223372036854775807 = NULL

これにより、アメリカ/ニューヨークのタイムゾーンは3月13日にESTからEDTへの最新の変換が完了し、次の変換は11月6日にESTに戻ります。

選択したタイムゾーンでDSTが無効になっている場合、これらのDST遷移の説明は存在しません。


もう1つ重要なことは、すべてのUnixシリーズシステムで、オペレーティングシステムの内部時計は常に次のとおりです。いつもUTCとして実行され、すべてのオペレーティングシステムの内部時間計算は、UTCに対応するUnixタイムスタンプを使用して処理されます。現地時間帯で DST 遷移が発生すると、システムは「時計を変更」せずに、現地時間と UTC 時間の間の変換オフセットのみを変更します。

Linuxシステムでは、デュアルブートシナリオでMicrosoftオペレーティングシステムとの互換性を確保するために、バッテリ駆動のハードウェアクロックを現地時間で実行することを選択できます。このオプションを使用すると、ハードウェアクロックはDST遷移に応じて調整されます。ただし、RTCをUTC時間(通常はサーバー指向のLinuxディストリビューションのデフォルト)に維持する場合、DSTによる実際のクロック調整は不要です。変換係数を適切に変更するだけです。

関連情報