O comando do Linux timedatectl
permite definir sua hora, data e fuso horário para o relógio do sistema e o relógio em tempo real. Reserve um momento e mostraremos como tudo funciona.
Índice
É tudo relativo
O tratamento do tempo pelo seu computador é uma daquelas coisas que você pode esperar que sejam bastante diretas. Pelo menos, até você começar a olhar para ele.
O relógio do sistema Linux conta o número de segundos desde a época do Unix . Isso foi às 00:00:00 de 1º de janeiro de 1970, UTC. UTC significa tempo universal coordenado, mas geralmente é dito como tempo universal coordenado ou apenas tempo universal. Este é o padrão de tempo pelo qual o mundo administra e regula o tempo. Diferentes fusos horários aplicam um deslocamento ao UTC para obter sua hora local. Alguns fusos horários estão à frente do UTC e outros estão atrás dele.
O relógio do sistema em computadores Linux é baseado em software. Obviamente, ele não pode ser executado quando o computador está desligado. Outro relógio, um relógio em tempo real baseado em hardware com bateria, é capaz de funcionar quando o computador está desligado. Sua finalidade é informar ao relógio do sistema que horas são sempre que o Linux inicializar. A menos que o acesso a um servidor de protocolo de tempo de rede (NTP) seja possível.
Os servidores NTP são servidores que fornecem informações de tempo precisas aos computadores que as solicitam. Se você inicializar seu computador ou laptop e não houver acesso à Internet — ou se ele não tiver sido configurado para usar servidores NTP — o relógio em tempo real será usado para preparar o relógio do sistema em vez de um servidor NTP.
O relógio do sistema está sempre em UTC. Qualquer aplicativo que precise adquirir a hora local precisa:
- Acesse o relógio do sistema e obtenha UTC
- Saiba em que fuso horário está e aplique o deslocamento correto
- Leve em consideração se o horário de verão está em vigor
A conversão de UTC para hora local é feita pelo aplicativo, não pelo relógio do sistema. Ou, mais precisamente, a conversão é realizada pelas bibliotecas de data e hora às quais o aplicativo está vinculado. É por isso que é vital que seu computador saiba qual é o fuso horário, qual é o horário UTC, quantos segundos se passaram desde a época do Unix e se o horário de verão está em vigor.
Em distribuições Linux baseadas em systemd, usamos o timedatectl
comando para ver ou alterar essas configurações e valores.
Introdução ao timedatectl
Para ver os dados atuais e a hora e outros valores, use o timedatectl
comando com o status
operador.
status timedatectl
Na verdade, você pode descartar o status e ainda obterá a mesma saída.
timedatectl
Ambos os conjuntos de saída mostram:
- Hora Local : A hora que o computador pensa que é, de acordo com seu fuso horário.
- Hora Universal : A hora UTC.
- Hora RTC : A hora que o relógio em tempo real está usando. Normalmente, isso é UTC.
- Fuso horário : Informação sobre o fuso horário configurado.
- Relógio do sistema sincronizado : se o relógio do sistema está sincronizado com um servidor NTP.
- Serviço NTP : se o serviço NTP do computador está ativo.
- RTC em TZ local : se o relógio em tempo real está usando a hora local em vez de UTC.
Você pode ver quantos fusos horários o timedatectl
comando suporta digitando:
timedatectl list-timezones | wc -l
Isso é muito mais do que há fusos horários no mundo . Se canalizarmos a saída e grep
filtrarmos as entradas para “America” e canalizarmos paraless
, podemos percorrer uma lista mais gerenciável.
timedatectl list-timezones | grep "América/" | menos
Ao revisar essa lista, você verá que “América” é considerada como tendo seu significado mais amplo possível. A segunda coisa que você notará é que a maioria das entradas não são fusos horários reais.
Configurando o fuso horário
Se você examinar a lista não filtrada de fusos horários suportados por timedatectl
você verá lugares e fusos horários. Para definir um fuso horário, você pode especificá-lo por nome como EST ou GMT, ou pode escolher um local no mesmo fuso horário que você, como Londres ou Nova York.
Redefinir seu fuso horário não é algo que você fará com frequência, mas talvez você tenha se mudado de casa ou esteja trabalhando fora por um tempo e queira localizar seu laptop. Se você precisar redefinir seu fuso horário, escolha um local no fuso horário que deseja usar.
Vamos definir este computador para a hora da montanha, que é o mesmo fuso horário de Edmonton. Veremos então como as configurações mudaram.
timedatectl set-timezone "América/Edmonton"
timedatectl
Nosso fuso horário foi alterado, nosso horário local foi alterado e nosso deslocamento do UTC aumentou.
Configurando manualmente a hora e a data
Embora seja possível definir manualmente a hora e a data, geralmente você não precisará. O uso de sincronização de horário e NTP é a maneira preferida de manter a hora e a data do computador precisas. Se você tentar alterar a data ou hora de seus computadores, provavelmente receberá um erro, informando que a sincronização de horário está em uso.
timedatectl set-time 10:30:00
Use este comando para desligar o serviço de sincronização de tempo:
sudo systemctl stop systemd-timesyncd.service
Você pode definir a hora, a data ou ambas usando o timedatectl
operador set-time. as datas estão na ordem ano-mês-dia YYY-MM-DD e a hora está na ordem horas-minutos-segundos HH:MM:SS. Vamos definir a hora e a data com este comando:
timedatectl set-time "2022-01-30 10:30:00"
Em seguida, verificaremos se as alterações ocorreram, usando timedatectl
.
timedatectl
A data e a hora mudaram. Além disso, observe que o computador está usando uma hora UTC falsa. Também somos informados de que o relógio do sistema não está sendo sincronizado e o serviço NTP está inativo.
Se você tiver acesso à Internet, assim que restaurar o serviço de sincronização de horário, o horário será recuperado e todos os detalhes serão redefinidos corretamente.
sudo systemctl start systemd-timesyncd.service
timedatectl
RTC: UTC ou LTZ?
É possível ter seu relógio em tempo real ajustado para o fuso horário local em vez de UTC—possível, mas desaconselhável. Se você fizer a alteração, verá um aviso sobre os efeitos terríveis que isso pode ter no seu sistema no futuro.
A razão para mostrar a você esse método é que você pode encontrar uma máquina em que eles estão tendo problemas estranhos com suas configurações de tempo. Isto é como definir o relógio em tempo real de volta para UTC.
Primeiro, precisaremos defini-lo para o fuso horário local.
timedatectl set-local-rtc 1
Então vamos pedir timedatectl
seu status.
timedatectl
Eu acho que eles deixaram seus sentimentos claros.
Para restaurar o relógio em tempo real para UTC, use este comando:
timedatectl set-local-rtc 0
Defina e esqueça
A menos que você tenha cometido um erro durante a instalação de sua distribuição Linux, ou você se realocou, geralmente não há razão para modificar as configurações do seu sistema e os relógios em tempo real.
Defina o relógio do sistema para seu fuso horário, o relógio em tempo real para UTC e verifique se o sistema está pesquisando um servidor de protocolo de horário de rede. Esse é o estado padrão após a maioria das instalações.
Se tudo estiver pronto, os sistemas de tempo do seu computador cuidarão de si mesmos.