Como fazer um fuso horário do Ubuntu mudar?

4

Gostaria de redefinir o fuso horário por meio da edição de /etc/timezone . No entanto, depois que eu terminei de editar e salvar o arquivo, a hora do sistema não mudou de acordo.

Por outro lado, quando aproveito o comando dpkg-reconfigure tzdata para alterar o fuso horário, a hora será alterada imediatamente. Além disso, o arquivo /etc/timezone é modificado de acordo.

Quais etapas faltam depois de editar e salvar o arquivo de configuração para que a nova hora entre em vigor?

    
por Terry Li 06.07.2011 / 21:57

5 respostas

3

Dê uma olhada em /var/lib/dpkg/info/tzdata.postinst , que acho que é o que está sendo executado quando dpkg-reconfigure tzdata é chamado.

Observe, em particular, o seguinte comando, que é executado após a atualização de /etc/timezone .

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

Portanto, o arquivo / etc / localtime precisa ser atualizado. Eu não tentei, mas meu palpite é que é um passo importante para fazer a mudança do fuso horário. Não está claro se o mantenedor tzdata espera que você faça essa alteração manualmente se tiver editado /etc/timezone .

    
por 07.07.2011 / 00:18
5

Como você descobriu que dpkg-reconfigure tzdata funciona, por que você não usa?

Se o problema é que é interativo e você deseja fazer o script da alteração, é possível. O fuso horário é configurado através do debconf . Você pode definir valores com debconf-set-selections . Em seguida, reconfigure o pacote, dizendo para não solicitar nada.

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

Os aplicativos leem /etc/localtime quando precisarem primeiro das informações de fuso horário. Isso é realizado pela biblioteca padrão do sistema, portanto, você não encontrará muitas exceções, se houver. /etc/localtime geralmente é um link simbólico para um arquivo em /usr/share/zoneinfo ou uma cópia desse arquivo. A maioria dos aplicativos precisa ser reiniciada para que uma alteração desse arquivo entre em vigor.

O arquivo /etc/timezone contém o nome de um fuso horário. Normalmente, /etc/localtime é um link ou uma cópia de /usr/share/zoneinfo/$(cat /etc/timezone) . /etc/timezone é usado pelo sistema de empacotamento principalmente (somente?), o que explica porque a mudança não teve nenhum efeito visível.

Lembre-se de que você pode usar um fuso horário diferente em um aplicativo específico, iniciando-o com a variável de ambiente TZ , por exemplo, TZ=Pacific/Tarawa date .

    
por 07.07.2011 / 00:43
1

Você pode executar service timezone restart para que isso seja aplicado manualmente. Isso é feito para qualquer arquivo de configuração do sistema. Qualquer serviço que dependa dessas configurações precisará ser reiniciado depois que um arquivo for alterado.

A alteração do arquivo /etc/timezone é realmente suficiente, mas normalmente é necessário reinicializar ou pelo menos fazer login novamente para que ele tenha efeito. Mudar o fuso horário não é algo que os fabricantes de sistemas anteciparam o suficiente para torná-lo um arquivo de configuração freqüentemente lido novamente!

Em alguns casos, você também precisará fazer o login novamente por causa de variáveis de ambiente que são definidas quando você faz login pela primeira vez. Por exemplo, a variável de idioma do sistema geralmente é definida no login e a alteração do arquivo de configuração não afetará os usuários que já estão conectados.

    
por 06.07.2011 / 22:01
1

Então, algo como:

set $area="America"
set $zone="Los_Angeles"
sudo echo "$area/$zone" > /tmp/timezone
sudo cp -f /tmp/timezone /etc/timezone
sudo cp -f /usr/share/zoneinfo/$area/$zone /etc/localtime
    
por 23.11.2012 / 19:50
0

Eu uso o script a seguir para perguntar ao usuário qual fuso horário definir e, em seguida, confirmar se ele foi definido:

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

Eu chamo de tz-set .

    
por 26.04.2018 / 09:27