Ubuntu 시간대 변경 사항을 적용하는 방법은 무엇입니까?

Ubuntu 시간대 변경 사항을 적용하는 방법은 무엇입니까?

편집하여 시간대를 재설정하고 싶습니다 /etc/timezone. 그런데 편집을 마치고 파일을 저장했는데도 그에 맞춰 시스템 시간이 바뀌지 않더군요.

반면에 dpkg-reconfigure tzdata시간대를 변경하는 명령을 사용하면 시간이 즉시 변경됩니다. 또한 /etc/timezone그에 따라 파일이 수정됩니다.

구성 파일을 편집하고 저장한 후 새 시간을 적용하려면 어떤 단계를 생략해야 합니까?

답변1

이제 작동한다는 것을 알았으니 dpkg-reconfigure tzdata사용해 보는 것은 어떨까요?

문제가 대화형이고 변경 사항을 스크립팅하려는 경우 이것이 가능합니다. 시간대는 다음을 통해 구성됩니다.데브 컨퍼런스. 다음 명령을 사용하여 값을 설정할 수 있습니다debconf-set-selections. 그런 다음 패키지를 재구성하고 아무것도 묻지 않도록 지시합니다.

debconf-set-selections <<EOF
tzdata tzdata/Areas select Europe
tzdata tzdata/Areas seen true
tzdata tzdata/Zones/Europe select Paris
tzdata tzdata/Zones/Europe seen true
EOF
dpkg-reconfigure -fnoninteractive tzdata

/etc/localtime애플리케이션은 처음 필요할 때 시간대 정보를 읽습니다. 이는 시스템의 표준 라이브러리에 의해 수행되므로 예외가 많이 발견되지는 않습니다. /etc/localtime일반적으로 아래 파일에 대한 심볼릭 링크 /usr/share/zoneinfo또는 해당 파일의 복사본입니다. 대부분의 응용 프로그램은 이 파일의 변경 사항을 적용하려면 다시 시작해야 합니다.

이 파일에는 /etc/timezone시간대 이름이 포함되어 있습니다. 일반적으로 /etc/localtime링크나 사본입니다 /usr/share/zoneinfo/$(cat /etc/timezone). /etc/timezone주로(만?) 패키징 시스템에서 사용되므로 변경해도 눈에 띄는 효과가 없는 이유가 설명됩니다.

TZ환경 변수(예:)를 사용하여 특정 애플리케이션을 시작하면 특정 애플리케이션에서 다른 시간대를 사용할 수 있습니다 TZ=Pacific/Tarawa date.

답변2

보니까 이게 호출되었을 때 실행되는 것 /var/lib/dpkg/info/tzdata.postinst같아요 .dpkg-reconfigure tzdata

/etc/timezone업데이트 이후 실행되는 다음 명령에 특히 주의하시기 바랍니다 .

cp -f /usr/share/zoneinfo/$AREA/$ZONE /etc/localtime.dpkg-new && \
            mv -f /etc/localtime.dpkg-new /etc/localtime

따라서 /etc/localtime 파일을 업데이트해야 합니다. 아직 해보지는 않았지만, 시간대를 바꾸는 중요한 단계인 것 같아요. 직접 편집한 경우 tzdata관리자가 수동으로 변경하기를 원하는지 확실하지 않습니다 /etc/timezone.

답변3

service timezone restart이를 적용하려면 수동으로 실행할 수도 있습니다 . 이는 거의 모든 시스템 프로필에서 작동합니다. 파일이 변경된 후에는 이러한 구성에 의존하는 모든 서비스를 다시 시작해야 합니다.

파일을 변경하는 것만 /etc/timezone으로도 충분하지만 일반적으로 적용하려면 재부팅하거나 최소한 다시 로그인해야 합니다. 시간대 변경은 시스템 제조업체가 예상하는 일이 아니며 자주 다시 읽어야 하는 구성 파일이 되기에 충분합니다!

처음 로그인할 때 설정한 환경 변수로 인해 다시 로그인해야 하는 경우도 있습니다. 예를 들어 시스템 언어 변수는 일반적으로 로그인 시 설정되며 프로필을 변경해도 로그인한 사용자에게는 영향을 미치지 않습니다.

답변4

다음 스크립트를 사용하여 사용자에게 설정하려는 시간대를 묻고 실제로 설정되었는지 확인합니다.

#!/bin/sh
sudo timedatectl set-timezone $(tzselect)
echo
echo timedatectl says:
timedatectl

나는 그것을 부른다 tz-set.

관련 정보