sexta-feira, 25 de fevereiro de 2011

Ajustando o relógio em um sistema Linux

Em um sistema Linux existem dois relógios principais, o relógio do hardware, que funciona independentemente de qualquer programa em execução na CPU e mesmo quando a máquina está desligada, e o relógio do sistema, que é controlado pelo kernel, conduzido por uma interrupção de tempo e funcionando somente quando o sistema está em execução na máquina.

O relógio do hardware é também chamado relógio de hora real (RTC), relógio do BIOS e relógio do CMOS.

O relógio do sistema é o relógio mais importante. O propósito básico do relógio do hardware, em um sistema Linux, é de manter o tempo enquanto o Linux não está em execução. O Linux, durante sua inicialização, inicia o relógio do sistema com o tempo do relógio do hardware e, a partir de então, não usa mais o relógio do hardware.

O kernel Linux mantém ainda o conceito de fuso horário para o sistema. Armazenado na variável de sistema 'TZ' e ou no diretório '/usr/share/zoneinfo'. Deste modo é possível armazenar a hora GMT no hardware e a hora local no sistema. A ferramenta 'tzselect' serve para definir o fuso horário.

Para ajustar o relógio do sistema e o relógio do hardware, uma distribuição Linux possui duas ferramentas de linha de comando, o 'date' e o 'hwclock'.

A ferramenta 'date' ajusta a hora e a data no sistema. Uma sintaxe que pode ser no modelo 'date MMDDhhmmAAAA', a linha de comando da ferramenta 'date' para, por exemplo, a hora local "Fev 25 14:29:49 BRT 2011", é:

# date 022514292011

Uma simples execução do comando 'date', sem opções, retorna a hora do sistema. Assim como a execução do comando 'hwclock --show' retorna a hora do hardware.

Para ajustar o relógio do hardware a partir da hora e da data do sistema, usa-se a ferramenta 'hwclock' com as seguintes opções:

# hwclock --localtime --directisa --systohc

Este exemplo anterior é para quando o relógio do hardware armazena a hora local, não a hora GMT. O que é mais comum em um computador. Uma explicação de cada opção do comando 'hwclock' pode ser encontrada em sua página manual. É possível definir a hora e a data diretamente em sua linha de comando, bem como ajustar no sentido inverso, do hardware para o sistema.

Outra ferramenta interessante é a 'ntpdate'. O comando 'ntpdate' ajusta a hora e a data do sistema via protocolo NTP, acessando um servidor NTP pela Internet. É como se fosse ligar para o serviço Hora Certa da companhia telefônica. O tempo recebido por esta ferramenta é bastante preciso, considerado como a hora correta. Um exemplo de linha de comando é:

# ntpdate a.ntp.br b.ntp.br

Esta ferramenta aceita mais de um servidor em sua linha de comando, resultando em uma maior precisão no tempo calculado. Existe também o serviço 'ntpd' para que o ajuste seja automatizado no sistema. Uma limitação da ferramenta 'ntpdate' é de não funcionar em um acesso à Internet por meio de servidor proxy. A não ser que o proxy esteja com a porta 123/UDP aberta.

Todas estas ferramentas, como visto, são para linha de comando. A distribuição Fedora, e outras, contém também a ferramenta gráfica 'system-config-date' para ajustar a hora e a data do sistema.

Um comentário:

  1. Muito boa explicação.
    Parabéns pela iniciativa, fiz o comando ntpdate a.ntp.br b.ntp.br e consegui resolver meu problema.

    No fedora executei o comando ntsysv e habilitei o ntpdate e ntpd... voltou a ajustar a data do pc automaticamente.

    Grato

    ResponderExcluir