Definindo o fuso horário do terminal

168

Eu quero mudar o fuso horário do relógio do sistema do terminal.

Isso pode ser feito com

tzselect

"que abre um gui no terminal"

ou

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

"que será definido como gmt"

Mas existe uma maneira de definir o fuso horário apenas com o deslocamento ie.-1 ou +5 etc?

Eu preciso fazer isso enquanto estou escrevendo um aplicativo para ajustar o timeoffset ou relatar logs e a única informação que tenho é o IP do usuário. Eu posso usar um webapp para encontrar a localização do IP, mas então eu preciso definir o deslocamento que seria fácil se eu pudesse obter o deslocamento da localização, mas se eu precisar encontrar zona e cidade seria uma dor real .

Se alguém souber a resposta para como definir o relógio do sistema com +/- hora, será ótimo.

    
por user2155009 22.07.2013 / 22:22

8 respostas

264

Para mudar o fuso horário do terminal, pressione Ctrl + Alt + T no seu teclado para abrir o Terminal. Quando se abre, execute o (s) comando (s) abaixo:

sudo dpkg-reconfigure tzdata

Depois de aberto, basta seguir as telas para alterar o fuso horário.

    
por Mitch 23.07.2013 / 00:02
137

Você também pode usar o novo timedatectl para definir a hora em 14.04.

sudo timedatectl set-timezone America/New_York
    
por Collin Anderson 15.09.2014 / 17:43
17

Você pode usar os arquivos GMT ± x em /usr/share/zoneinfo/Etc .

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime
    
por Ry- 22.07.2013 / 22:43
15

Sei que esse segmento está um pouco desatualizado, mas eu estava procurando uma solução melhor porque precisava definir automaticamente o fuso horário em uma VM depois que um usuário faz o download do site e o implanta. Aqui está o que acabei com:

echo "Setting TimeZone..."
export tz='wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*//p'' &&  timedatectl set-timezone $tz
export tz='timedatectl status| grep Timezone | awk '{print }''
echo "TimeZone set to $tz"

Isso consultará geoip.ubuntu.com do servidor assim que for iniciado na nova rede (meu script verifica o primeiro curso de conectividade) e, em seguida, definirá o fuso horário do servidor com base na resposta.

O "wget -q0 -" diz ao wget para exportar somente os resultados para o stdout que é então canalizado para a variável $ tz.

Espero que ajude alguém!

    
por Clayton Dukes 25.12.2014 / 04:22
11

A maneira fácil de atualizar o fuso horário é usar sudo dpkg-reconfigure tzdata . Mas isso não é tão fácil de escrever.

Se você deseja definir o fuso horário explicitamente por meio de um script (por exemplo, para configurar uma VM), aqui está uma receita:

Defina uma variável para o fuso horário desejado, por exemplo um de

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

Valores válidos são os diretórios e nomes de arquivos em /usr/share/zoneinfo .

Então, simplesmente

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

Observe que /etc/localtime e /etc/timezone devem ser consistentes.

Provavelmente, reinicie agora para que todos os seus serviços também sejam atualizados (por exemplo, cron).

    
por Rick-777 13.05.2015 / 20:13
9

TL; DR /etc/localtime é um link simbólico que aponta para um arquivo em /usr/share/zoneinfo/Continent/City . Ao alterar para onde aponta, você pode alterar seu fuso horário.

Para alterar o fuso horário, remova o /etc/localtime e atribua o link simbólico à sua cidade desejada. Por exemplo, ls -l /etc/localtime informa que esse arquivo aponta para /usr/share/zoneinfo/America/Denver . Para mudá-lo para Nova York, eu faço

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. Espere um minuto para que meu relógio seja atualizado

A imagem abaixo mostra as etapas e a confirmação de timedatectl

    
por Sergiy Kolodyazhnyy 06.05.2015 / 04:21
3

Aqui está o método que eu uso, que é centrado nos EUA, pois não preciso me preocupar com fusos horários fora dos EUA.

Se eu precisar determinar o fuso horário atual, eu também faço:

cat /etc/timezone  

ou

sudo hwclock --show  

Eu então faço:

timedatectl set-timezone <_designation_>

em que <_designation_> é um dos seguintes:

EUA / Leste dos EUA EUA / Central EUA / montanha EUA / Pacífico
EUA / Alaska
EUA / Aleutian
EUA / Arizona
EUA / Leste-Indiana
EUA / Havaí
EUA / Indiana-Starke
EUA / Michigan
EUA / Pacífico-Novo
EUA / Samoa

E.G .:

timedatectl set-timezone US/Eastern  

Outras designações de fuso horário podem ser encontradas aqui: link

    
por Redblur 29.03.2017 / 21:04
0

Você não pode fazer isso a menos que você selecione o arquivo de fuso horário que deseja corresponder a cada deslocamento de fuso horário.

Algumas respostas sugeriram usar os arquivos em / usr / share / zoneinfo / Etc, mas o problema é que eles são agnósticos em DST.

Portanto, a menos que você escolha uma configuração de fuso horário para corresponder a cada deslocamento ou não se preocupe com o horário de verão, não há como fazer isso genericamente.

    
por Alex G 23.08.2015 / 19:52

Tags