 |
O Linux é um sistema operacional bastante moderno. Ele surgiu em 1999, mais ou menos na época em que começava a desabrochar a grande rede mundial de computadores, a Internet. Somando-se a versatilidade do código livre e a forma de distribuição, temos um dos sistemas mais poderosos já desenvolvidos, com recursos que vão muito além de um simples computador desktop ou mesmo um servidor corporativo. |
E o Linux é poderoso também no controle do tempo. Calma! Não vamos aprender como criar uma máquina do tempo, e sim como ajustar e obter hora e data de diversas formas neste sistema, usando o modo texto ou shell.
Não vou "perder tempo" sobre o modo gráfico porque funciona quase da mesma forma que no bom "e velho" Windows.
O comando dateO comando mais simples nesta área é o
date que nos permite "ver" a data e as horas no Linux. Seu uso é simples, basta digitar o comando no prompt e obteremos algo como:
Mon Dec 6 14:37:50 BRST 2004
Bom, com um pouco de treinamento, fica fácil interpretar essas informações. Porém, ha uma forma de personalizar a saída do comando, de acordo com nossas necessidades. Tente por exemplo, o comando abaixo:
date +"%d/%m/%Y %H:%M:%S"
e teremos algo como:
06/12/2004 14:33:51
O que fizemos foi definir o formato que queremos para a data. Para isso, basta usar o comando date, seguido do sinal de mais (+) e, entre aspas, a string com os códigos necessários. Veja outro exemplo bem interessante:
date +"Rio, %d de %B de %Y"
Teremos a saída:
Rio, 06 de December de 2004
O mês não está muito elegante, mas funciona! Abaixo está uma tabela com todas as possibilidades para se usar na string do date:
Exibindo um calendárioO comando "cal" é muito interessante, apesar de eu ter poucos usos para ele, a não ser exibir um calendário de forma que possamos localizar alguma data específica. Existem várias formas de ver o calendário. Para testar o comando, basta digitar:
cal
que exibirá o mês e ano corrente conforme a imagem:
Podemos ainda especificar o ano ou o mês e ano. Por exemplo, o comando "cal 03 2005" exibirá o calendário de março de 2005. Já o comando "cal 2005" exibirá todo o calendário do ano 2005.
O formato padrão para o comando cal é:
cal [opções] [mês] [ano]
Os parâmetros entre colchetes são opcionais. As [opções] para cal são:
- -m - Exibe o calendário começando pela segunda-feira;
- -j - Exibe o calendário com o número do dia no ano;
- -y - Exibe o calendário do ano corrente inteiro;
- -3 - Exibe o mês anterior, o corrente e o seguinte ao mesmo tempo.
Uma saída interessante é:
cal -3
que exibe algo como:
Acertando os ponteirosAlém de exibir a data, o comando
date também é usado para ajustar a data do sistema em modo texto. Para isso, fazemos o seguinte:
date MMDDhhmmYYYY
Onde:
- MM é o número do mês. 01 para janeiro, 02 para fevereiro, etc;
- DD é o dia do mês entre 01 e 31;
- hh é a hora no formato 24h entre 00 e 23;
- mm são os minutos, variando entre 00 e 59;
- YYYY é o ano com 4 dígitos. Ex.: 2004.
Para acertar o relógio para o dia 06 de dezembro de 2004, às 14:54, usamos:
date 120614542004
Só que esse comando altera a data apenas na RAM. Ao desligar o sistema e tornar a ligá-lo, a data do BIOS será recarregada. Para atualizar a data no BIOS, ajuste-a com o comando
date e depois dê o comando:
hwclock --systohc
Este comando grava a data atual no "hardware clock".
Se, por outro lado, você quer recuperar a data do BIOS para a RAM, use o comando:
hwclock --hctosys
Outra possibilidade é ajustar o seu relógio direto da Internet, o que garante um ajuste quase perfeito. Para isso existe o comando
ntpdate que acessa servidores NTP - Network Time Protocol - na Internet e salva os dados no relógio do sistema. Abaixo estão alguns servidores que podem ser experimentados:
- a.ntp.br (Brasil)
- b.ntp.br (Brasil)
- ntp.pop-rs.rnp.br (Brasil)
- ntp.pop-pr.rnp.br (Brasil)
- ntp.pop-df.rnp.br (Brasil)
- ntp.nml.csiro.au
- clock.uregina.ca
- swisstime.ethz.ch
Para ajustar o relógio, conecte-se na Internet e dê o comando:
ntpdate ntp.pop-rs.rnp.br
Se deu certo, a saída será algo como:
Looking for host ntp.pop-rs.rnp.br and service ntp
6 Dec 11:36:39 ntpdate[819]: adjust time server 200.132.0.132 offset 0.000646 sec
Uma solução interessante é testar todos os servidores de uma só vez, já que alguns costumam parar de funcionar ou mudar de endereço. Para isso, construímos um shell script como o que está abaixo que chamaremos de "ajusta.sh":
#!/bin/bash
echo " "
echo -n "Atualizando o relogio..."
# Procura o primeiro servidor NTP ativo
ntpdate a.ntp.br > /dev/null 2>&1 ||
ntpdate b.ntp.br > /dev/null 2>&1 ||
ntpdate ntp.pop-pr.rnp.br > /dev/null 2>&1 ||
ntpdate ntp.pop-df.rnp.br > /dev/null 2>&1 ||
ntpdate ntp.nml.csiro.au > /dev/null 2>&1 ||
ntpdate clock.uregina.ca > /dev/null 2>&1 ||
ntpdate swisstime.ethz.ch > /dev/null 2>&1 ||
ntpdate ntp.pop-rs.rnp.br > /dev/null 2>&1
# Atualiza o relógio do BIOS
hwclock --systohc && > /dev/null 2>&1
echo " Ok."
# Exibe a data ajustada
echo " "
echo -n "A data atual é: "
date +"%d/%m/%Y %H:%M:%S"
echo " "
Salve-o e dê permissão de execução com o comando:
chmod +x ajusta.sh
Além de atualizar o relógio com o primeiro servidor disponível, este script já ajusta o relógio no BIOS também.
Qualquer dúvida, não deixe de acessar nosso Fórum CataBits!
Abraços e até a próxima...