Manter a Hora do Sistema Precisa com timedatectl e chronyd
Nesta etapa, você aprenderá como manter o tempo do sistema preciso usando o comando timedatectl e entenderá o papel do serviço chronyd. A manutenção precisa do tempo é crucial para logging, segurança e muitos serviços de rede.
1. Usando timedatectl para gerenciar o tempo do sistema e fusos horários:
O comando timedatectl fornece uma visão geral das configurações atuais do sistema relacionadas ao tempo, incluindo a hora local, hora universal (UTC), hora RTC, fuso horário e status de sincronização NTP.
Vamos verificar as configurações atuais de tempo do seu sistema:
timedatectl
Você deve ver uma saída semelhante a esta (a hora e a data exatas refletirão a hora atual do seu sistema):
Local time: Sun 2025-06-15 21:46:11 EDT
Universal time: Mon 2025-06-16 01:46:11 UTC
RTC time: Mon 2025-06-16 01:46:10
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Você pode listar todos os fusos horários disponíveis usando a opção list-timezones:
timedatectl list-timezones | less
Pressione q para sair do less. Os fusos horários são nomeados com base no banco de dados de fuso horário da Internet Assigned Numbers Authority (IANA), normalmente por continente/oceano e, em seguida, a maior cidade.
Para alterar o fuso horário do sistema, você usa a opção set-timezone. Por exemplo, vamos alterar o fuso horário para America/Phoenix. Você precisa de privilégios sudo para isso.
sudo timedatectl set-timezone America/Phoenix
Agora, verifique a alteração:
timedatectl
Você deve ver o fuso horário atualizado para America/Phoenix.
Você também pode definir manualmente a hora atual do sistema usando a opção set-time. O formato é "YYYY-MM-DD hh:mm:ss", mas você pode omitir a data ou a hora. Vamos definir a hora para 09:00:00 (para a data atual).
sudo timedatectl set-time 09:00:00
Verifique a alteração da hora:
timedatectl
Finalmente, a opção set-ntp habilita ou desabilita a sincronização NTP para ajuste automático do tempo. Ele aceita true ou false como um argumento. Vamos desabilitar a sincronização NTP por um momento (vamos reativá-la mais tarde).
sudo timedatectl set-ntp false
Verifique o status do serviço NTP:
timedatectl
Você deve ver NTP service: inactive.
2. Entendendo e configurando o serviço chronyd:
O serviço chronyd é um daemon que mantém o Relógio em Tempo Real (RTC) do sistema preciso, sincronizando-o com servidores do Protocolo de Tempo de Rede (NTP). É o cliente NTP padrão no Red Hat Enterprise Linux.
O arquivo de configuração para chronyd é /etc/chrony.conf. Por padrão, ele usa servidores NTP públicos. Em um cenário do mundo real, você pode configurá-lo para usar servidores NTP internos.
Vamos visualizar o arquivo chrony.conf padrão.
cat /etc/chrony.conf
Você verá linhas começando com server ou pool, que definem as fontes NTP. A opção iburst é recomendada, pois leva quatro medições rapidamente para uma sincronização inicial mais precisa.
O stratum de uma fonte de tempo NTP indica sua qualidade. Um stratum 0 é um relógio de referência, stratum 1 está diretamente conectado a um relógio de referência e stratum 2 sincroniza de um servidor stratum 1.
Como systemctl não está disponível neste ambiente de contêiner, não podemos reiniciar diretamente o chronyd para aplicar as alterações de configuração. No entanto, podemos simular a alteração de configuração modificando o arquivo.
Vamos reativar a sincronização NTP usando timedatectl.
sudo timedatectl set-ntp true
Verifique o status do serviço NTP novamente:
timedatectl
Você deve ver NTP service: active.
O comando chronyc atua como um cliente para o serviço chronyd. Você pode usá-lo para monitorar o status da sincronização. O comando chronyc sources mostra as fontes de tempo atuais e seu status de sincronização.
chronyc sources -v
A saída mostrará detalhes sobre as fontes NTP. O asterisco * no campo S (Source state) indica a fonte com a qual chronyd está atualmente sincronizado.
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 100.100.61.88 1 5 377 16 +1824us[+2180us] +/- 85ms
...output omitted...
Esta saída confirma que seu sistema está sincronizando ativamente seu tempo com um servidor NTP.