Como acertar data e horário no Linux

Existem duas fontes de horário em um computador: o “CMOS clock” da placa mãe, que tem uma bateria e mantém o horário mesmo após o desligamento da máquina, e o “relógio de software” do kernel, que pode ser atualizado constantemente. O relógio do sistema é, assim, configurado a partir do “CMOS clock” durante a inicialização, e o “CMOS clock” é atualizado no desligamento. O horário do “relógio de hardware” pode ser visto através do comando “sudo hwclock –show”.

Talvez a opção mais fácil de atualizar data e hora seja através da interface gráfica, clicando no relógio, configurações e seguindo daí em menus bem intuitivos – é necessária a senha de super usuário. Mas existem outras formas através de linha de comando no terminal – muitas vezes a única opção.

O comando “date” mostra a data e o horário atual do sistema em diferentes formas de visualização e até permite cálculos de tempo (veja mais clicando no link). Além disso, também permite acertar a hora do sistema manualmente, utilizando a sintaxe reduzida “date MMDDhhmm” ou date –set=”” ou também “-s” no lugar de “–set=”, por exemplo:

No exemplo, o fuso horário é o UTC (referência mundial). Essa informação está no arquivo “/etc/timezone”. Você pode alterar o fuso horário de diferentes formas:

– Executar comando “sudo dpkg-reconfigure tzdata” e escolher uma região conforme a janela de diálogo que aparecerá;

tzdata_ex

– A opção de cima pode ser executada também primeiro reescrevendo o conteúdo do arquivo e executando o comando conforme segue:

– Executar o comando “tzselect” e escolher as opções conforme forem aparecendo;

tzselect_ex

– Criar um link para a pasta “/etc/localtime” (por exemplo):

– Editar o arquivo “/etc/sysconfig/clock” colocando as seguintes informações: ZONE=”America/Sao_Paulo”; UTC=false; ARC=false. Depois, executar os seguintes comandos:

– Executar o comando “tzconfig” ou “timeconfig”;

O fuso horário de Brasília aparece como BRT quando executar comando “date”. Caso não tenha privilégios de root, pode exportar a variável TZ: “export TZ=BRT”.

Caso queira que o computador NÃO atualize com o horário de verão, basta escolher uma cidade que seja do mesmo fuso mas que não tenha horário de verão (Recife, por exemplo). O computador acessa um banco de dados interno que contém informações sobre os períodos de horário de verão no mundo todo que é atualizado regularmente de modo automático.

Atualizar horário a partir de servidor

É possível fazer com que o próprio sistema operacional sincronize-se com um servidor NTP (Network Time Protocol) e mantenha a data e hora atualizadas de forma automática. Para sincronizar o relógio, é recomendado utilizar-se o daemon ntpd instalando o pacote “apt-get install ntp” – o pacote “ntpdate” está obsoleto. Uma boa sugestão é substituir o conteúdo do arquivo “/etc/ntp.conf” pelo desse link: NTPd (ntp.conf). Ele basicamente substitui os servidores de hora pelos do Observatório Nacional (segue o link também para verificar a hora certa).

O serviço pode ser parado/iniciado/reiniciado através dos seguintes comandos:

Também é possível consultar os servidores cadastrados no arquivo de configuração do NTP através do comando “ntpq -p”.

No Brasil, temos uma boa quantidade de servidores de tempo públicos de qualidade, como os do projeto NTP.br, os do Observatório Nacional (ON), os da RNP e os de algumas universidades. O site deles pode ser incluído modificando o arquivo “/etc/ntp.conf” – o link “pool.ntp.org” é um grupo de máquinas que concordaram em servir como servidores NTP públicos e pode ser limitado para um país específico, como “br.pool.ntp.org” para o Brasil.

Ainda usando o ntpdate, existe esse script que pode ser incluído no crontab para executar de tempos em tempos: