다른 버전의 CentOS에서 DST(일광 절약 시간)가 비활성화되어 있는지 어떻게 확인합니까?

다른 버전의 CentOS에서 DST(일광 절약 시간)가 비활성화되어 있는지 어떻게 확인합니까?

CentOS 7 및 6을 운영 체제로 사용하는 여러 서버가 있습니다. 이전에는 DST 시간이 1년에 두 번 변경되었으며 운영 체제가 각 서버에서 이를 자동으로 수행했습니다.
이제 갑자기 일광 절약 시간제 정책을 변경하는 법안이 통과되었습니다. 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에서 파일은 링크가 아니라 /etc/localtime의 시간대 파일 중 하나의 실제 복사본일 가능성이 높습니다 . /usr/share/zoneinfo/...한 가지 더 작은 문제: /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 전환 설명이 존재하지 않습니다.


한 가지 더 중요한 점은 모든 Unix 계열 시스템에서 운영 체제의 내부 시계는 항상 다음과 같습니다.언제나UTC로 실행되며 모든 운영 체제 내부 시간 계산은 UTC에 해당하는 Unix 타임스탬프를 사용하여 처리됩니다. 현지 시간대에서 DST 전환이 발생하면 시스템은 "시계를 변경"하지 않고 현지 시간과 UTC 시간 사이의 변환 오프셋만 변경합니다.

Linux 시스템에서는 이중 부팅 시나리오에서 Microsoft 운영 체제와의 호환성을 위해 배터리 구동식 하드웨어 시계가 현지 시간으로 실행되도록 선택할 수 있습니다. 이 옵션을 사용하면 하드웨어 시계가 DST 전환에 따라 조정됩니다. 그러나 RTC를 UTC 시간(일반적으로 서버 지향 Linux 배포판의 기본값)으로 유지하는 경우 DST로 인해 실제 시계 조정이 필요하지 않습니다. 변환 계수를 적절히 변경하면 됩니다.

관련 정보