Respostas:
Uma ferramenta que achei mais fácil de usar é dpkg-reconfigure
. Usar:
sudo dpkg-reconfigure tzdata
Você terá várias opções, incluindo algumas que não estão incluídas tzselect
.
Presumivelmente, isso é um pouco tarde para o OP e mais direcionado para outros pesquisadores que chegam aqui.
Se você precisar de uma solução não interativa, tente esta solução alterando o fuso horário com dpkg-reconfigure tzdata e debconf-set-selections
echo "Europe/Zurich" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Você pode descobrir seu fuso horário procurando em / usr / share / zoneinfo. De fato, o comando dpkg-reconfigure acima copia o arquivo apropriado de lá para / etc / localtime. Eu costumava fazer isso manualmente, e parece funcionar bem.
Não se surpreenda se os processos de execução longa não receberem a alteração. por exemplo, registros de data e hora do Apache vêm à mente. Considere se isso importa e, portanto, se você precisa reiniciar os processos em execução ou mesmo reiniciar.
/etc/localtime
ainda não existe. Se ele existir e for um link para /usr/share/zoneinfo/whatever
, será usado como base e /etc/localtime
será atualizado de acordo com a substituição das alterações.
Para editá-lo de maneira não interativa nas versões recentes do Debian e Ubuntu (Stretch / Xenial etc.), você precisa removê-lo /etc/localtime
também, caso contrário, /etc/timezone
será substituído.
echo 'Europe/Zurich' > /etc/timezone
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
Esta resposta é baseada na resposta do mc0e '. Não posso adicionar um comentário com minha reputação.
TL; DR
echo "TZ=Etc/UTC" >> /etc/environment
tzconfig
onde Etc/UTC
é o seu fuso horário preferido que você encontrou usando tzselect
.
Versão mais longa
Quando você está usando
dpkg-reconfigure tzdata
as informações do fuso horário não são mantidas após a reinicialização. Você pode verificar suas configurações com
diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Se você estiver apenas atualizando /etc/timezone
, a atualização não será consistente /etc/localtime
, portanto , é melhor executar
tzconfig
Use tzselect
para descobrir quais fusos horários realmente existem (ou simplesmente navegar no /usr/share/zoneinfo
diretório).
Nos sistemas POSIX, isso TZ
deve ter precedência antes /etc/localtime
:
export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018
O uso direto TZ
pode economizar muitas chamadas do sistema, pois as funções relacionadas a data / hora usadas com freqüência precisam acessar o sistema de arquivos sempre que algum programa solicitar a data atual. É uma micro-otimização, mas bastante simples.
TZ
no seu arquivo de perfil cria um link simbólico? Isso não parece verdade na minha experiência. Talvez você quisesse dizer "Também certifique-se de criar o link simbólico ..."?
$TZ
variável é lido por glibc
funções: gnu.org/software/libc/manual/html_node/TZ-Variable.html
echo "TZ=Etc/UTC" >> /etc/environment
? você está perdendo TZ=
parte ... (se alguém ainda está executando versões antigas do debian). Além disso, o material não-interativo como daemons ainda usaria /etc/localtime
a versão em vez de um conjunto de TZ
...