Fórum CataBits
Blog Home Ajuda Login Registre-se
Notícias: SMF - Iniciado! Bem-vindo, Visitante. Por favor faça o Login ou Registe-se.
09 de Janeiro de 2009, 14:40. 

+  Fórum CataBits
|-+  Artigos CataBits
| |-+  Linux & cia.
| | |-+  Controlando o tempo
0 Membros e 1 Visitante estão vendo este tópico. « tópico anterior tópico seguinte »
Páginas: [1] Imprimir
Autor Tópico: Controlando o tempo  (Lida 508 vezes)
Luferat
Administrador
Membro Intermédio
*****
Mensagens: 109


I love Discovery Channel!


Ver Perfil WWW
« : 06 de Dezembro de 2004, 10:21 »


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 date

O 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ário

O 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 ponteiros

Alé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":

Código:
#!/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...
Registrado

Páginas: [1] Imprimir 
« tópico anterior tópico seguinte »
Ir para:  

Powered by MySQL Powered by PHP  ©2008 Anluferat Informática Ltda. 
 Todos os direitos reservados. 
  Powered by SMF 1.1.5 | SMF © 2006, Simple Machines LLC
XHTML 1.0 válido! CSS válido!