Saltar para o conteúdo
102 · LPIC-1 (parte 2)

108.1 Manutenção da data e hora do sistema

TópicoT09ObjetivoManter a data e hora do sistemaPeso2PáginasLPIC-1 (102) - Version 5.0

Resumo Conciso

Relógio do Sistema vs Relógio de Hardware

CaracterísticaRelógio do SistemaRelógio de Hardware (RTC)
Atualizado porSistema operacionalPlaca-mãe (funciona independentemente)
Definido a partir doRelógio de hardware (na inicialização)Definido manualmente ou via NTP
Comando principaldatehwclock

Comandos Principais

ComandoFunçãoOpções importantes
dateExibe ou altera o relógio do sistema-u (UTC), +%s (Unix time), --date= (data específica), -s (definir hora)
hwclockExibe ou altera o relógio de hardware--systohc (sistema→hardware), --hctosys (hardware→sistema), --set --date (definir manualmente)
timedatectlGere data/hora (systemd)set-time, list-timezones, set-timezone, set-ntp
ntpqMonitora status do NTP-p (imprimir pares), -n (endereços IP)
chronycGere o chronytracking, sources, ntpdata, makestep
ntpdateSincronização manual únicaSeguido de endereço do servidor NTP

Fusos Horários

CaminhoFunção
/usr/share/zoneinfo/Informações sobre fusos horários
/etc/timezoneRepresentação de dados do fuso horário local
/etc/localtimeLink simbólico para o zoneinfo ativo
/etc/ntp.confConfiguração do daemon NTP (ntpd)
/etc/chrony.confConfiguração do daemon chrony

Termos NTP Importantes

TermoDefinição
Deslocamento (offset)Diferença absoluta entre hora do sistema e hora NTP
Salto (step)Alteração significativa quando deslocamento > 128ms
Ajuste gradativo (slew)Alteração gradual quando deslocamento < 128ms
Relógio insanoDeslocamento > 17 minutos — daemon NTP não altera o relógio
Escorregamento (drift)Dois relógios ficam fora de sincronia com o tempo
Variação (jitter)Quantidade de escorregamento desde a última consulta

Hierarquia NTP

  • Estrato 0: Relógios de referência (relógios atômicos)
  • Estrato 1: Servidores diretamente conectados a relógios de referência
  • Estrato 2+: Servidores acessíveis ao público
  • pool.ntp.org: Projeto de código aberto que distribui carga entre servidores

|---|---|---| | date -u | X | | | | hwclock --set --date "12:00:00" | | X | | | timedatectl | | | X | | timedatectl \| grep RTC | | X | | | hwclock --hctosys | | | X | | date +%T -s "08:00:00" | X | | | | timedatectl set-time 1980-01-10 | X | | |

Solução: date atua no relógio do sistema; hwclock no relógio de hardware; timedatectl exibe ambos; hwclock --hctosys sincroniza hardware→sistema (ambos).

Exercício Guiado 2 — Corrigir formato de argumento do date

Enunciado: Corrija o formato para que o comando seja bem-sucedido:

bash
$ date --debug --date "20/20/12 0:10 -3"

Solução: O formato está incorreto (mês 20 não existe). Correção:

bash
$ date --debug --set "12/20/20 0:10 -3"

Exercício Guiado 3 — Definir mês sem alterar resto da data

Enunciado: Use o comando date para definir o mês como fevereiro, deixando o resto inalterado.

Solução:

bash
date +%m -s "2"

Exercício Guiado 4 — Sincronizar relógio de hardware

Enunciado: Após alterar a hora do sistema, use hwclock para ajustar o relógio de hardware.

Solução:

bash
hwclock -systohc

Exercício Guiado 5 — Descobrir continente de eucla

Enunciado: Existe um local chamado eucla. De que continente faz parte? Use grep para descobrir.

Solução:

bash
timedatectl list-timezones | grep -i eucla# ougrep -ri eucla /usr/share/zoneinfo

Resultado: eucla está na Austrália.

Exercício Guiado 6 — Definir fuso horário para eucla

Enunciado: Defina seu fuso horário atual para eucla.

Solução:

bash
timedatectl set-timezone 'Australia/Eucla'# ouln -s /usr/share/zoneinfo/Australia/Eucla /etc/localtime

Exercícios Exploratórios

Exercício Exploratório 1 — Método ideal de configuração de hora

Enunciado: Qual método de configuração de hora é o ideal? Em que caso seria impraticável?

Na maioria das distribuições, o NTP vem ativado por padrão e define a hora automaticamente. O método preferido seria impraticável em sistemas sem conectividade de rede, como equipamentos industriais embarcados.

Exercício Exploratório 2 — Por que tantos métodos?

Enunciado: Por que existem tantos métodos para definir a hora do sistema?

A configuração da hora é um requisito de todos os sistemas *nix por décadas. Existem muitos métodos legados que ainda são mantidos por compatibilidade retroativa com sistemas mais antigos.

Exercício Exploratório 3 — Problema do Ano 2038

Enunciado: Por que não se adotou uma "Nova Época" em vez de usar 64 bits para resolver o problema de 2038?

Até 2038, a maioria dos computadores já terá CPUs de 64 bits e 64 bits não degradará o desempenho. Reiniciar a Época causaria impactos imprevisíveis em software legado (bancos, grandes empresas). Qualquer sistema de 32 bits sofreria o estouro, mas alterar a Época afetaria mais sistemas do que apenas os de 32 bits.

Exercício Exploratório 4 — Ativar NTP e verificar sincronização

Enunciado: Ative a sincronização NTP via systemd e confirme se o relógio do sistema ficou sincronizado.

bash
sudo timedatectl set-ntp truetimedatectl status

set-ntp true ativa o serviço de sincronização de hora (normalmente o systemd-timesyncd). Em timedatectl status, as linhas relevantes são NTP service: active e System clock synchronized: yes. Para desativar, usar set-ntp false.

Exercício Exploratório 5 — Estado da sincronização com chronyc

Enunciado: Usando o chrony, verifique o estado de sincronização atual do sistema e identifique os servidores de origem.

bash
chronyc trackingchronyc sources

chronyc tracking mostra o deslocamento (offset), a taxa de erro (drift) e a que estrato o sistema está sincronizado. chronyc sources lista os servidores NTP de origem, os seus estratos e o estado de seleção (^* = origem sincronizada atual, ^+ = candidato, ^? = fora de alcance).