Gerenciamento de Horario do Sistema - date, timedatectl, NTP, chrony

Gerenciamento de Horario do Sistema - date, timedatectl, NTP, chrony

O Que Voce Vai Conquistar

  • Mostrar o horario atual com date e alternar entre formatacao e definicao
  • Explicar a relacao entre o relogio do sistema e o relogio de hardware (RTC) usando hwclock
  • Gerenciar fuso horario e sincronizacao de tempo juntos com timedatectl
  • Configurar sincronizacao de tempo com NTP (ntpd / chrony) e verificar seu estado
  • Responder as perguntas frequentes do exame "UTC vs hora local" e "definicao manual vs conflito NTP" com raciocinio

Este e o nucleo do objetivo 108.1 do LPIC-1 "Manter o horario do sistema". Correlacao de logs, disparo preciso do cron e validacao de certificados TLS dependem de um horario correto.

Em Qual Camada o Horario do Sistema e Gerenciado?

O horario do Linux e gerenciado em duas camadas: o relogio do sistema (um relogio de software mantido pelo kernel) e o relogio de hardware (o RTC na placa-mae). A sincronizacao diaria tem como alvo o relogio do sistema, enquanto o RTC fornece o valor inicial no boot.

Relogio Substancia Comando Quando desligado
Relogio do sistema Relogio de software dentro do kernel date / timedatectl Perdido
Relogio de hardware (RTC) Chip com bateria na placa-mae hwclock Mantido

No boot, o horario e lido do RTC para o relogio do sistema (hctosys), e durante a operacao o NTP corrige o relogio do sistema. Gravar o relogio do sistema de volta no RTC com hwclock --systohc mantem o valor inicial do proximo boot preciso.

Em sistemas systemd, a leitura e escrita do RTC no boot sao tratadas automaticamente, entao operacoes manuais com hwclock geralmente sao desnecessarias. Quando a sincronizacao NTP esta habilitada, o timedatectl atualiza o RTC periodicamente.

Mostrando e Definindo Horario com date

date mostra e define o horario atual do sistema. Especificadores de formato comecando com + permitem formatar a saida livremente. A definicao requer root, mas evite definicao manual enquanto a sincronizacao NTP estiver ativa.

Mostrando o horario 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 sao %Y (ano com 4 digitos), %m (mes), %d (dia), %H (hora, 24h), %M (minuto) e %S (segundo). A flag -u mostra o horario em UTC. date '+%Y%m%d' e classico para gerar nomes de arquivos de backup.

Definindo o horario manualmente

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

-s (--set) define o horario diretamente. No entanto, em ambientes onde a sincronizacao NTP esta habilitada, a definicao e sobrescrita pelo NTP quase imediatamente. Para definir manualmente, pare a sincronizacao primeiro (veja abaixo).

Operando o Relogio de Hardware com hwclock

hwclock le e grava o RTC. --systohc copia o horario do sistema para o RTC, e --hctosys copia o RTC para o horario do sistema. Se o RTC e mantido em UTC ou hora local e um ponto frequente no exame.

Lendo o RTC e direcao de sincronizacao

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 direcao pelo nome.

Opcao Direcao Finalidade
--systohc (-w) Sistema -> RTC Salvar horario correto do sistema no RTC
--hctosys (-s) RTC -> Sistema Inicializar horario do sistema a partir do RTC

UTC vs hora local

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

Com --utc o RTC e tratado como UTC; com --localtime e tratado como hora local. UTC e fortemente recomendado para sistemas somente Linux. Manter o RTC em hora local tende a causar correcoes duplas e desvio em mudancas de horario de verao ou mudancas de fuso horario.

Em dual boot com Windows, o Windows trata o RTC como hora local por padrao, entao ou ajuste o lado Linux com --localtime ou mude o Windows para usar UTC. Misturar os dois faz o horario desviar a cada boot.

Gerenciando Horario e Fuso Horario com timedatectl

timedatectl e o comando padrao em sistemas systemd, gerenciando horario, fuso horario, sincronizacao de tempo e modo RTC em um so lugar. Executar timedatectl sem argumento retorna a mesma saida 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 sincronizacao. RTC in local TZ: no indica que o RTC e mantido em UTC (o estado recomendado).

Definindo o fuso horario

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

list-timezones lista os fusos horarios disponiveis, e set-timezone define um. Isso atualiza o link simbolico /etc/localtime (veja abaixo).

Habilitando sincronizacao de tempo

sudo timedatectl set-ntp true

set-ntp true habilita e inicia o primeiro servico de sincronizacao de rede existente (tipicamente systemd-timesyncd em sistemas systemd). Use false para desabilitar. Para definir o horario manualmente, primeiro pare a sincronizacao com set-ntp false.

Mantendo o RTC em UTC

sudo timedatectl set-local-rtc 0

set-local-rtc 0 mantem o RTC em UTC (recomendado). Definir 1 o torna hora local, mas a documentacao oficial afirma que "manter o RTC no fuso horario local nao e totalmente suportado e criara diversos problemas com mudancas de fuso horario e ajustes de horario de verao. Se possivel, mantenha o RTC em modo UTC."

Quais Arquivos Determinam o Fuso Horario?

O fuso horario do sistema e determinado por qual arquivo sob /usr/share/zoneinfo/ e apontado por /etc/localtime. Sistemas baseados em Debian adicionalmente mantem o nome do fuso como texto em /etc/timezone.

Caminho Funcao
/usr/share/zoneinfo/ Armazenamento de todas as definicoes de fuso (binario)
/etc/localtime Link simbolico apontando para o fuso do sistema
/etc/timezone Nome do fuso como texto (familia 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 mantem este link e /etc/timezone consistentes automaticamente. E mais seguro do que relinkar manualmente. Uma alteracao temporaria por usuario tambem e possivel com a variavel de ambiente TZ.

Sincronizando Horario com NTP

NTP (Network Time Protocol) e um protocolo que busca horario preciso de servidores upstream para corrigir o relogio do sistema. Ha tres implementacoes: o classico ntpd, seu sucessor chrony e o leve systemd-timesyncd.

Diferencas entre as tres implementacoes

Implementacao Arquivo de configuracao Comando de verificacao Caracteristicas
ntpd (referencia ntp.org) /etc/ntp.conf ntpq -p Longa historia, documentacao abundante
chrony (chronyd) /etc/chrony.conf chronyc sources / chronyc tracking Forte com conexoes intermitentes e VMs
systemd-timesyncd /etc/systemd/timesyncd.conf timedatectl status Apenas cliente SNTP, leve

Executar multiplos daemons de sincronizacao no mesmo host gera conflitos, entao 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 sincronizacao, + marca um candidato a sincronizacao. reach e a alcancabilidade (octal; 377 significa que as ultimas 8 consultas tiveram sucesso), e offset e a diferenca de tempo em relacao ao local (milissegundos). Os servidores sao 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 e o modo da fonte (^ e um servidor), e a coluna S e o estado de selecao (* significa em sincronizacao). Stratum e o numero de saltos a partir de um relogio de referencia, e Reach e o registrador de alcancabilidade. chronyc tracking mostra detalhes da qualidade de sincronizacao como Reference ID, Stratum, System time (o offset atual entre o relogio NTP e o relogio do sistema), Last offset e RMS offset. Os servidores sao 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 sincronizacao" e "ntpq -p lista os peers do ntpd". Os nomes dos arquivos de configuracao (/etc/ntp.conf e /etc/chrony.conf) tambem sao frequentemente cobrados.

Erros Comuns e Correcoes

O gerenciamento de horario e propenso a conflitos entre configuracoes e a confusao entre UTC e hora local. Aqui estao casos tipicos cobrados no exame e vistos na pratica.

  • Confundir UTC e hora local: Gravar com --localtime enquanto o RTC deveria estar em UTC faz o horario desviar pelo offset do fuso horario (3 horas no horario de Brasilia) a cada boot. Padronize em UTC para sistemas somente Linux.
  • Conflito entre NTP e definicao manual: Definir o horario manualmente com date -s ou hwclock --systohc enquanto a sincronizacao NTP esta ativa e sobrescrito pelo NTP imediatamente. Para definir manualmente, primeiro pare a sincronizacao com timedatectl set-ntp false (ou pare o daemon relevante).
  • Executar multiplos daemons de sincronizacao simultaneamente: Iniciar tanto ntpd quanto chronyd faz ambos disputarem a mesma porta e funcao, desestabilizando a sincronizacao. Habilite apenas um.
  • Mudanca de fuso horario sem efeito: Editar /etc/localtime manualmente mas deixa-lo inconsistente com /etc/timezone (familia Debian). Usar timedatectl set-timezone mantem ambos consistentes.
  • Mudanca de fuso nao afeta processos em execucao: Mesmo apos mudar o fuso horario, daemons ja iniciados (cron, aplicacoes) podem manter o fuso antigo. Reinicie os servicos apos a mudanca.

Solucao de Problemas

Problemas de sincronizacao de tempo sao mais rapidos de isolar na ordem "sintoma -> causa -> verificacao -> correcao".

Sintoma: timedatectl nao sincroniza (System clock synchronized: no)

Causa: O servico de sincronizacao de tempo esta desabilitado, ou o servidor NTP esta inacessivel

Verificacao:

timedatectl status
sudo systemctl status systemd-timesyncd

Correcao: Habilite a sincronizacao com sudo timedatectl set-ntp true. Se ainda mostrar no, verifique se o firewall nao esta bloqueando a porta UDP 123 e se as linhas server no arquivo de configuracao estao corretas.

Sintoma: Horario definido com date -s reverte imediatamente

Causa: A sincronizacao NTP esta habilitada e sobrescreve a definicao manual instantaneamente

Verificacao:

timedatectl status

Correcao: Se System clock synchronized: yes, este e o comportamento normal. Para definir o horario intencionalmente, pare a sincronizacao com sudo timedatectl set-ntp false primeiro, depois execute date -s.

Sintoma: Horario desvia pelo offset do fuso horario a cada boot

Causa: O modo do RTC (UTC / local) e a interpretacao do sistema discordam

Verificacao:

timedatectl status
sudo hwclock --show

Correcao: 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 Verificacao

  • [ ] Verificou horario, fuso e estado de sincronizacao com timedatectl status
  • [ ] Definiu o fuso horario correto com timedatectl set-timezone
  • [ ] Habilitou a sincronizacao de tempo com timedatectl set-ntp true
  • [ ] Verificou a alcancabilidade das fontes de tempo com chronyc sources / ntpq -p
  • [ ] Confirmou que o RTC e mantido em UTC (set-local-rtc 0)

Resumo

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

O horario do sistema e a base dos logs, cron e validacao de certificados. Apos dominar o 108.1, combine com o gerenciamento de logs dependente de tempo e o agendamento de tarefas para completar seu conhecimento operacional.

Proximas 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

Pratica