Gerenciamento de Horário do Sistema - date, timedatectl, NTP, chrony

Gerenciamento de Horário do Sistema - date, timedatectl, NTP, chrony

O Que Você Vai Conquistar

  • Mostrar o horário atual com date e alternar entre formatação e definição
  • Explicar a relação entre o relógio do sistema e o relógio de hardware (RTC) usando hwclock
  • Gerenciar fuso horário e sincronização de tempo juntos com timedatectl
  • Configurar sincronização de tempo com NTP (ntpd / chrony) e verificar seu estado
  • Responder as perguntas frequentes do exame "UTC vs hora local" e "definição manual vs conflito NTP" com raciocínio

Este é o núcleo do objetivo 108.1 do LPIC-1 "Manter o horário do sistema". Correlação de logs, disparo preciso do cron e validação de certificados TLS dependem de um horário correto.

Em Qual Camada o Horário do Sistema é Gerenciado?

O horário do Linux é gerenciado em duas camadas: o relógio do sistema (um relógio de software mantido pelo kernel) e o relógio de hardware (o RTC na placa-mãe). A sincronização diária tem como alvo o relógio do sistema, enquanto o RTC fornece o valor inicial no boot.

Relógio Substância Comando Quando desligado
Relógio do sistema Relógio de software dentro do kernel date / timedatectl Perdido
Relógio de hardware (RTC) Chip com bateria na placa-mãe hwclock Mantido

No boot, o horário é lido do RTC para o relógio do sistema (hctosys), e durante a operação o NTP corrige o relógio do sistema. Gravar o relógio do sistema de volta no RTC com hwclock --systohc mantém o valor inicial do próximo boot preciso.

Em sistemas systemd, a leitura e escrita do RTC no boot são tratadas automaticamente, então operações manuais com hwclock geralmente são desnecessárias. Quando a sincronização NTP está habilitada, o timedatectl atualiza o RTC periodicamente.

Mostrando e Definindo Horário com date

date mostra e define o horário atual do sistema. Especificadores de formato começando com + permitem formatar a saída livremente. A definição requer root, mas evite definição manual enquanto a sincronização NTP estiver ativa.

Mostrando o horário e especificadores de formato

date
date '+%Y-%m-%d %H:%M:%S'
date '+%Y%m%d'
date -u
Sat May 30 14:23:07 JST 2026
2026-05-30 14:23:07
20260530
Sat May 30 05:23:07 UTC 2026

Os principais especificadores de formato são %Y (ano com 4 dígitos), %m (mês), %d (dia), %H (hora, 24h), %M (minuto) e %S (segundo). A flag -u mostra o horário em UTC. date '+%Y%m%d' é clássico para gerar nomes de arquivos de backup.

Definindo o horário manualmente

sudo date -s '2026-05-30 14:30:00'
Sat May 30 14:30:00 JST 2026

-s (--set) define o horário diretamente. No entanto, em ambientes onde a sincronização NTP está habilitada, a definição é sobrescrita pelo NTP quase imediatamente. Para definir manualmente, pare a sincronização primeiro (veja abaixo).

Operando o Relógio de Hardware com hwclock

hwclock lê e grava o RTC. --systohc copia o horário do sistema para o RTC, e --hctosys copia o RTC para o horário do sistema. Se o RTC é mantido em UTC ou hora local é um ponto frequente no exame.

Lendo o RTC e direção de sincronização

sudo hwclock --show
sudo hwclock --systohc
sudo hwclock --hctosys
2026-05-30 14:31:05.123456+09:00

--show (-r) exibe o valor atual do RTC. Memorize a direção pelo nome.

Opção Direção Finalidade
--systohc (-w) Sistema -> RTC Salvar horário correto do sistema no RTC
--hctosys (-s) RTC -> Sistema Inicializar horário do sistema a partir do RTC

UTC vs hora local

sudo hwclock --systohc --utc
sudo hwclock --systohc --localtime

Com --utc o RTC é tratado como UTC; com --localtime é tratado como hora local. UTC é fortemente recomendado para sistemas somente Linux. Manter o RTC em hora local tende a causar correções duplas e desvio em mudanças de horário de verão ou mudanças de fuso horário.

Em dual boot com Windows, o Windows trata o RTC como hora local por padrão, então ou ajuste o lado Linux com --localtime ou mude o Windows para usar UTC. Misturar os dois faz o horário desviar a cada boot.

Gerenciando Horário e Fuso Horário com timedatectl

timedatectl é o comando padrão em sistemas systemd, gerenciando horário, fuso horário, sincronização de tempo e modo RTC em um só lugar. Executar timedatectl sem argumento retorna a mesma saída que status.

Verificando o estado atual

timedatectl status
               Local time: Sat 2026-05-30 14:35:12 JST
           Universal time: Sat 2026-05-30 05:35:12 UTC
                 RTC time: Sat 2026-05-30 05:35:11
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

System clock synchronized e NTP service mostram o estado de sincronização. RTC in local TZ: no indica que o RTC é mantido em UTC (o estado recomendado).

Definindo o fuso horário

timedatectl list-timezones | grep Tokyo
sudo timedatectl set-timezone Asia/Tokyo
Asia/Tokyo

list-timezones lista os fusos horários disponíveis, e set-timezone define um. Isso atualiza o link simbólico /etc/localtime (veja abaixo).

Habilitando sincronização de tempo

sudo timedatectl set-ntp true

set-ntp true habilita e inicia o primeiro serviço de sincronização de rede existente (tipicamente systemd-timesyncd em sistemas systemd). Use false para desabilitar. Para definir o horário manualmente, primeiro pare a sincronização com set-ntp false.

Mantendo o RTC em UTC

sudo timedatectl set-local-rtc 0

set-local-rtc 0 mantém o RTC em UTC (recomendado). Definir 1 o torna hora local, mas a documentação oficial afirma que "manter o RTC no fuso horário local não é totalmente suportado e criará diversos problemas com mudanças de fuso horário e ajustes de horário de verão. Se possível, mantenha o RTC em modo UTC."

Quais Arquivos Determinam o Fuso Horário?

O fuso horário do sistema é determinado por qual arquivo sob /usr/share/zoneinfo/ é apontado por /etc/localtime. Sistemas baseados em Debian adicionalmente mantêm o nome do fuso como texto em /etc/timezone.

Caminho Função
/usr/share/zoneinfo/ Armazenamento de todas as definições de fuso (binário)
/etc/localtime Link simbólico apontando para o fuso do sistema
/etc/timezone Nome do fuso como texto (família Debian / Ubuntu)
ls -l /etc/localtime
lrwxrwxrwx 1 root root 30 May 30 14:00 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

Usar timedatectl set-timezone mantém este link e /etc/timezone consistentes automaticamente. É mais seguro do que relinkar manualmente. Uma alteração temporária por usuário também é possível com a variável de ambiente TZ.

Sincronizando Horário com NTP

NTP (Network Time Protocol) é um protocolo que busca horário preciso de servidores upstream para corrigir o relógio do sistema. Há três implementações: o clássico ntpd, seu sucessor chrony e o leve systemd-timesyncd.

Diferenças entre as três implementações

Implementação Arquivo de configuração Comando de verificação Características
ntpd (referência ntp.org) /etc/ntp.conf ntpq -p Longa história, documentação abundante
chrony (chronyd) /etc/chrony.conf chronyc sources / chronyc tracking Forte com conexões intermitentes e VMs
systemd-timesyncd /etc/systemd/timesyncd.conf timedatectl status Apenas cliente SNTP, leve

Executar múltiplos daemons de sincronização no mesmo host gera conflitos, então habilite apenas um.

Verificando o ntpd

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp1.example.com 133.243.x.x      2 u   45   64  377    8.123    0.512   0.087
+ntp2.example.com 133.243.x.x      2 u   38   64  377   12.456   -0.231   0.142

ntpq -p (peers) lista os servidores pares. Um * inicial marca o servidor atualmente em sincronização, + marca um candidato a sincronização. reach é a alcançabilidade (octal; 377 significa que as últimas 8 consultas tiveram sucesso), e offset é a diferença de tempo em relação ao local (milissegundos). Os servidores são especificados com linhas server em /etc/ntp.conf.

Verificando o chrony

chronyc sources
chronyc tracking
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp1.example.com              2   6   377    23    +12us[  +18us] +/-   14ms
^- ntp2.example.com              2   6   377    21   -103us[ -103us] +/-   21ms

Em chronyc sources, a coluna M é o modo da fonte (^ é um servidor), e a coluna S é o estado de seleção (* significa em sincronização). Stratum é o número de saltos a partir de um relógio de referência, e Reach é o registrador de alcançabilidade. chronyc tracking mostra detalhes da qualidade de sincronização como Reference ID, Stratum, System time (o offset atual entre o relógio NTP e o relógio do sistema), Last offset e RMS offset. Os servidores são especificados com linhas server / pool em /etc/chrony.conf.

Para o exame, memorize o mapeamento: "chronyc sources para fontes de tempo, chronyc tracking para detalhes da sincronização" e "ntpq -p lista os peers do ntpd". Os nomes dos arquivos de configuração (/etc/ntp.conf e /etc/chrony.conf) também são frequentemente cobrados.

Erros Comuns e Correções

O gerenciamento de horário é propenso a conflitos entre configurações e a confusão entre UTC e hora local. Aqui estão casos típicos cobrados no exame e vistos na prática.

  • Confundir UTC e hora local: Gravar com --localtime enquanto o RTC deveria estar em UTC faz o horário desviar pelo offset do fuso horário (3 horas no horário de Brasília) a cada boot. Padronize em UTC para sistemas somente Linux.
  • Conflito entre NTP e definição manual: Definir o horário manualmente com date -s ou hwclock --systohc enquanto a sincronização NTP está ativa é sobrescrito pelo NTP imediatamente. Para definir manualmente, primeiro pare a sincronização com timedatectl set-ntp false (ou pare o daemon relevante).
  • Executar múltiplos daemons de sincronização simultaneamente: Iniciar tanto ntpd quanto chronyd faz ambos disputarem a mesma porta e função, desestabilizando a sincronização. Habilite apenas um.
  • Mudança de fuso horário sem efeito: Editar /etc/localtime manualmente mas deixá-lo inconsistente com /etc/timezone (família Debian). Usar timedatectl set-timezone mantém ambos consistentes.
  • Mudança de fuso não afeta processos em execução: Mesmo após mudar o fuso horário, daemons já iniciados (cron, aplicações) podem manter o fuso antigo. Reinicie os serviços após a mudança.

Solução de Problemas

Problemas de sincronização de tempo são mais rápidos de isolar na ordem "sintoma -> causa -> verificação -> correção".

Sintoma: timedatectl não sincroniza (System clock synchronized: no)

Causa: O serviço de sincronização de tempo está desabilitado, ou o servidor NTP está inacessível

Verificação:

timedatectl status
sudo systemctl status systemd-timesyncd

Correção: Habilite a sincronização com sudo timedatectl set-ntp true. Se ainda mostrar no, verifique se o firewall não está bloqueando a porta UDP 123 e se as linhas server no arquivo de configuração estão corretas.

Sintoma: Horário definido com date -s reverte imediatamente

Causa: A sincronização NTP está habilitada e sobrescreve a definição manual instantaneamente

Verificação:

timedatectl status

Correção: Se System clock synchronized: yes, este é o comportamento normal. Para definir o horário intencionalmente, pare a sincronização com sudo timedatectl set-ntp false primeiro, depois execute date -s.

Sintoma: Horário desvia pelo offset do fuso horário a cada boot

Causa: O modo do RTC (UTC / local) e a interpretação do sistema discordam

Verificação:

timedatectl status
sudo hwclock --show

Correção: Para sistemas somente Linux, padronize o RTC em UTC com sudo timedatectl set-local-rtc 0. Para dual boot com Windows, alinhe ambos os lados em um modo.

Lista de Verificação

  • [ ] Verificou horário, fuso e estado de sincronização com timedatectl status
  • [ ] Definiu o fuso horário correto com timedatectl set-timezone
  • [ ] Habilitou a sincronização de tempo com timedatectl set-ntp true
  • [ ] Verificou a alcançabilidade das fontes de tempo com chronyc sources / ntpq -p
  • [ ] Confirmou que o RTC é mantido em UTC (set-local-rtc 0)

Resumo

Cenário Comando Finalidade
Mostrar horário date '+%Y-%m-%d' Exibir com formato personalizado
Verificar estado timedatectl status Verificar horário, fuso e sincronização
Definir fuso timedatectl set-timezone Alterar o fuso horário
Controlar sincronização timedatectl set-ntp true Habilitar sincronização NTP
Gravar no RTC hwclock --systohc Salvar horário do sistema no RTC
Verificar chrony chronyc sources / tracking Fontes de tempo e qualidade da sincronização
Verificar ntpd ntpq -p Listar servidores pares

O horário do sistema é a base dos logs, cron e validação de certificados. Após dominar o 108.1, combine com o gerenciamento de logs dependente de tempo e o agendamento de tarefas para completar seu conhecimento operacional.

Próximas Leituras

Continue Sua Jornada LPIC-1

Hub LPIC-1

  • Hub de Aprendizado LPIC-1 -- Mapa completo de artigos LPIC-1, acompanhamento de progresso e cobertura dos objetivos do exame

Artigos LPIC-1 Relacionados

Prática