Como podemos definir automaticamente o fuso horário padrão do sistema no Linux usando a Internet? A meu ver, os servidores NTP podem atualizar apenas o tempo, mas não o fuso horário. Existe algum servidor que possa alterar o fuso horário?
Como podemos definir automaticamente o fuso horário padrão do sistema no Linux usando a Internet? A meu ver, os servidores NTP podem atualizar apenas o tempo, mas não o fuso horário. Existe algum servidor que possa alterar o fuso horário?
Respostas:
Eu escrevi um programa há um tempo atrás que faz isso: tzupdate .
Você pode ver o que definiria seu fuso horário (sem realmente defini-lo) executando tzupdate -p
:
$ tzupdate -p
Europe/Malta
Você pode configurá-lo para real executando tzupdate
como root.
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
Isso funciona por:
/etc/localtime
para apontar para o arquivo zoneinfo para esse fuso horárioEste é um tópico antigo, mas ainda relevante para o kubuntu 1710, que não muda o fuso horário automaticamente. Estou usando a solução de Chris Down para o tzupdate, mas garantindo também que ele seja acionado quando o sistema tentar se conectar a uma rede (wifi ou outra). Isso pressupõe que você esteja usando o Network Manager.
Abra um terminal primeiro.
Instale o tzupdate
sudo apt install python-pip
pip install -U tzupdate
Em seguida, verifique se ele está acessível a todos os usuários
sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/.
sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
Teste se funciona
sudo tzupdate
Precisamos, então, garantir que isso seja acessível a todos os usuários
sudo su -
tzupdate
que coloca você como root e depois verifica se o comando altera seu fuso horário. Depois, certifique-se de sair para retornar como usuário normal
exit
Certifique-se de que o tzupdate possa ser executado com o sudo sem uma senha. Isso é necessário para uma etapa posterior quando acionamos isso do networkmanager, que executa isso em segundo plano. Digite isso em um terminal para editar o arquivo sudoers
sudo visudo
Adicione esta linha no final do arquivo
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
Pressione CTRL-X e pressione Y e ENTER para salvar as alterações.
Depois, garantimos que o NetworkManager sempre chame isso depois de acionar uma alteração na conexão de rede (por exemplo, ao conectar a um wifi). Para isso, criamos um arquivo chamado tzupdate na pasta dispatcher.d que simplesmente chama sudo tzupdate. O arquivo precisa de permissões executáveis para executar
echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
Observe que o NetworkManager chamará execute sudo (ou seja, sudo tzupdate), que normalmente solicitará uma senha.
Pode haver uma maneira melhor de fazer isso, ou seja, fazer com que o NetworkManager chame isso somente quando houver uma conexão ativa e não desativada (como o descrito acima) - tentei colocar o script em / etc / network / if-up .d mas isso não funcionou para mim
Para testar isso no Kubuntu - Altere o fuso horário local para outra coisa (vá para o plasmoid Date na barra de tarefas e clique com o botão direito do mouse e selecione 'Adjust Date / Time' e depois 'TimeZone' na guia)
Desligue o wifi e ligue-o novamente - você verá que, uma vez conectado ao wifi, ele espera cerca de 30 segundos e deve alterar o fuso horário com êxito.
Observe que isso não foi testado com wifi, onde é necessário digitar uma senha em uma página da web. Espero que o fato de isso ser executado no final de uma conexão de rede deva fornecer tempo suficiente para que um usuário insira credenciais - caso contrário, isso poderá precisar de ajustes adicionais (verifique se existe uma conexão, verifique se você consegue se conectar à Internet, aguarde por X segundos, se não conseguir se conectar à Internet, e tente novamente Y vezes
Não está claro o que você quer dizer com "atualização de fuso horário".
Unix e Linux mantêm o tempo como o número de segundos desde 1 de janeiro de 1970, 00:00 UTC. O relógio do sistema Unix é, portanto, independente do fuso horário. Os fusos horários não existem no kernel do Linux; é somente quando um aplicativo de espaço do usuário exibe o tempo em que o número de segundos desde 1970 é interpretado usando um fuso horário. Geralmente, essa interpretação é feita através das funções da biblioteca C. O fuso horário é selecionado pela TZ
variável de ambiente. As definições de fuso horário (que consistem em um nome de fuso horário, offset do UTC, datas em que o horário de verão está em vigor e as compensações durante o horário de verão) fazem parte do GNU libc e geralmente são incluídas nas distribuições do Linux como um pacote "tzdata". Portanto, atualizar as definições de fuso horário é uma questão de correr apt-get upgrade
, yum update
ou alguma operação similar.
Observe que alguns softwares, como Java, têm seus próprios arquivos de definição de fuso horário, que precisam ser atualizados separadamente.
O NTP mantém o controle do número de segundos desde 1º de janeiro de 1900, UTC . Portanto, o NTP, como o kernel do Unix, não tem conceito de fuso horário.