CodeGym /Cursos /Docker SELF /Gerenciamento de fusos horários e tempo: comandos timedat...

Gerenciamento de fusos horários e tempo: comandos timedatectl

Docker SELF
Nível 3 , Lição 2
Disponível

Gerenciamento de fusos horários e tempo: comandos timedatectl

1. Trabalhando com o tempo no Linux

Por que é importante configurar o tempo corretamente?

Imagina que você tá tentando rastrear um erro no log do sistema, mas o tempo nos logs não bate com o real. Ou, pior ainda, seu servidor numa empresa internacional tá mostrando horários diferentes pros usuários. Configurar o tempo de forma correta não é só uma questão de conveniência: é crucial pro funcionamento dos sistemas, sincronização de arquivos, manutenção da segurança (certificados SSL dependem do tempo) e coordenação de tarefas de trabalho.

No Linux, o tempo pode ser representado de duas formas:

  1. Tempo do Sistema (System Time) — é o tempo que o sistema operacional usa pras suas tarefas.
  2. Tempo de Hardware (Hardware Time) — armazenado no nível do hardware (BIOS/UEFI).

Vamos trabalhar com o tempo do sistema usando a ferramenta timedatectl.


2. Fundamentos do comando timedatectl

timedatectl é uma ferramenta de linha de comando que oferece uma interface prática para gerenciar o tempo. Ele permite:

  • Verificar as configurações atuais de horário e fuso horário;
  • Configurar horário do sistema e do hardware;
  • Configurar fusos horários;
  • Ativar e desativar a sincronização de horário usando NTP (Network Time Protocol).

Verificando o horário atual

Vamos começar pelo básico. Para verificar o horário atual e as configurações, execute o comando:

timedatectl

Exemplo de saída:

Local time: Tue 2023-10-31 12:34:56 MSK
Universal time: Tue 2023-10-31 09:34:56 UTC
RTC time: Tue 2023-10-31 09:34:56
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Explicação dos campos:

  • Local time: Horário local (sistema).
  • Universal time: Horário no formato UTC (tempo universal coordenado).
  • RTC time: Horário do hardware (nível de BIOS/UEFI).
  • Time zone: Fuso horário atual.
  • System clock synchronized: Se o relógio está sincronizado via NTP.
  • NTP service: Se o serviço de sincronização de tempo está ativo.
  • RTC in local TZ: Se o horário do hardware corresponde ao fuso horário local.

Configurando e alterando o fuso horário

Às vezes, após uma mudança de localização ou requisitos do projeto, pode ser necessário alterar o fuso horário. Por exemplo, seu servidor estava configurado para Nova York, mas agora atende usuários em Moscou. Os fusos horários podem ser encontrados no diretório /usr/share/zoneinfo.

Para visualizar os fusos horários disponíveis, execute:

timedatectl list-timezones

A saída será uma lista enorme no formato:

Africa/Abidjan
America/New_York
Asia/Tokyo
Europe/Moscow

Você pode definir um novo fuso horário com o comando:

sudo timedatectl set-timezone Europe/Moscow

Verifique se o fuso horário foi alterado:

timedatectl

Exercício prático

  1. Descubra o fuso horário atual do seu servidor.
  2. Altere o fuso horário para UTC.
  3. Retorne o fuso horário para o local de origem.

3. Configurando o horário manualmente

Embora os servidores modernos geralmente sincronizem o horário via NTP, às vezes é necessário configurar o horário manualmente. Isso é útil se o servidor estiver em uma rede isolada sem acesso à internet.

Primeiro, você pode verificar o horário atual do sistema:

date

Você pode configurar um novo horário usando o comando:

sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"

Por exemplo, para configurar o horário para 1º de novembro de 2023, 12:00:

sudo timedatectl set-time "2023-11-01 12:00:00"

Agora, verifique o resultado novamente:

timedatectl

Configurando o horário do hardware

O horário do hardware (também conhecido como RTC — Real-Time Clock) é gerenciado no nível do BIOS/UEFI. Se o horário do hardware não estiver sincronizado com o do sistema, isso pode causar problemas durante a reinicialização. Para sincronizar, execute:

sudo hwclock --systohc

Esse comando ajustará o horário do hardware de acordo com o horário do sistema.

Se você precisar fazer o inverso (sincronizar o horário do sistema com o do hardware), use:

sudo hwclock --hctosys

4. Sincronização do tempo via NTP

Sincronizar o tempo via NTP é um jeito automático de manter o horário atualizado utilizando servidores remotos. Na maioria das distribuições modernas do Linux, o NTP já vem ativado por padrão.

Verificando a configuração do NTP

Execute:

timedatectl status

Se o NTP estiver desativado (a linha NTP service mostrar inactive), ative-o:

sudo timedatectl set-ntp true

Para desativar o NTP, execute:

sudo timedatectl set-ntp false

Se o NTP não estiver funcionando, verifique se os serviços correspondentes estão ativos. Por exemplo, em sistemas com systemd-timesyncd, certifique-se de que o serviço está ativo:

sudo systemctl status systemd-timesyncd

5. Exercício prático

Desafio

  1. Configure o fuso horário do seu sistema para UTC.
  2. Defina manualmente a hora do sistema para 12:00:00, 1º de novembro de 2023.
  3. Ative a sincronização de tempo via NTP.

Verificação

Depois de concluir a tarefa, certifique-se de que:

  • O horário do seu sistema corresponde aos parâmetros definidos.
  • O fuso horário foi alterado para UTC.
  • O serviço NTP está ativo.

6. Erros comuns e armadilhas

  1. "RTC in local TZ: no" não corresponde ao fuso horário local. Muitos sistemas preferem usar UTC para o tempo do hardware, a fim de evitar confusão ao trabalhar em diferentes fusos horários. Isso não é um erro, mas sim uma preferência.

  2. Erro de acesso ao alterar o tempo. O comando timedatectl requer privilégios de superusuário. Certifique-se de que você está usando sudo.

  3. A sincronização com NTP não é ativada. Confira se o serviço NTP está rodando no seu servidor. Por exemplo, para systemd-timesyncd, execute:

    sudo systemctl start systemd-timesyncd
    

Pra que isso serve na prática?

  1. Administração de servidores. Configurar o tempo e os fusos horários é importante para o funcionamento correto dos logs, sincronização de dados e agendamento de tarefas.
  2. Trabalhar com projetos internacionais. Usar UTC como padrão ajuda a evitar confusões ao trabalhar com clientes de diferentes fusos horários.
  3. Entrevistas de emprego e certificações. Perguntas sobre timedatectl e gerenciamento de tempo aparecem em provas e entrevistas para vagas de administrador de sistemas.

Agora você está pronto para gerenciar o tempo no Linux como gerencia seus prazos: com confiança, precisão e sem surpresas desnecessárias.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION