(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

80. Usando o programa ``clock''

Tudo o que você precisa saber está na página de manual do clock(8), porém, este mini-COMO FAZER irá guiá-lo.

Nota

É necessário ser o superusuário para executar o ``clock'', ou qualquer outro programa que afete a hora do sistema ou o relógio da CMOS.

80.1 Verificando a sua instalação

Verifique nos seus arquivos de inicialização do sistema se há um comando parecido com ``clock -a'' ou ``clock -ua''. Dependendo da distribuição com que se está trabalhando, pode estar no arquivo /etc/rc.local, ou /etc/rc.d/rc.sysinit, ou em algum lugar similar.

Se estiver dizendo ``clock -s'' ou ``clock -us'', mude o ``s'' para um ``a'', e então, verifique se há um arquivo /etc/adjtime, que contém uma única linha parecida com isso:

0.000000 842214901 0.000000

Estes números são o fator de correção ( em segundo por dia ), a hora que o relógio foi corrigido ( em segundos desde do dia 1 de Janeiro de 1970 ), e a fração de segundos que foi arredondada da última vez. Se este arquivo não existir, entre no sistema como superusuário e crie-o, com uma única linha como essa ( com todos os zeros ):

0.0 0 0.0

Depois execute ``clock -a'' ou ``clock -ua'' manualmente do interpretador de comandos ( shell ) para atualizar o segundo número ( use o parâmetro ``u'' se o seu relógio estiver configurado para hora Universal ao invés de local ).

80.2 Medindo a taxa de alteração do seu relógio

Primeiramente é necessário saber que horas são :-). A sua hora local pode estar precisa ou não. Meu método favorito é chamar o serviço de hora certa pelo telefone 130. Se tiver acesso a um servidor de hora na rede, pode-se usar o programa ntpdate do pacote xntpd ( use o parâmetro -b para proteger o kernel da confusão com o relógio da CMOS ). De outra maneira, use ``date -s hh:mm:ss'' para configurar manualmente a hora do kernel, e depois execute ``clock -w'' para configurar o relógio da CMOS a partir do relógio do kernel. É necessário relembrar quando foi a última vez que o relógio foi configurado, então, escreva a data em algum lugar onde você não irá perder. Se foi usado o ntpdate, faça ``date +%s'' e escreva o número de segundos desde o dia 1 de Janeiro de 1970.

Depois de alguns dias ou semanas, volte e veja o quanto o relógio foi alterado. Se estiver configurando o relógio manualmente, recomendo esperar pelo menos duas semanas, e somente calcular a taxa de alteração para o mais próximo de .1 seg/dia. Depois de alguns meses, o mais próximo de .01 seg/dia ( algumas pessoas exigem mais precisão do que isso, porém eu prefiro ser conservador ). Se você está usando o ntpdate, não espere todo esse tempo.

Pode-se ter um cron executando um ``clock -a'' em intervalos regulares, para manter a hora do sistema alinhada com a hora ( corrigida ) da CMOS. Este comando também irá ser executado no seu arquivo de inicialização toda vez que você inicializar a máquina. Então, se você faz isso freqüentemente ( como alguns de nós ), isto será o suficiente para os seus propósitos.

Observe que certos programas podem reclamar se a hora do sistema pula ou retrocede alguns segundos. Se houver este problema, pode-se usar o xntpd ou o ntpdate para corrigir a hora de forma mais gradual.

80.3 Exemplo

Para configurar a hora

Entre no sistema como superusuário. Ligue para o 130 e escute atentamente. Digite:

date -s hh:mm:ss
mas não pressione enter até ouvir o bip ( após os segundos ). ( Pode-se usar o ``ntpdate'' ao invés do ``date'', e pular a parte da ligação para o 130 ). Isto configura a ``hora do kernel''. Digite então:
clock -w
Isto configura a hora da CMOS para se ajustar com a hora do kernel. Digite:
date +%j
( ou ``date +%s'' se você usou o ``ntpdate'' ao invés do ``date'' acima ) e anote o número que ele fornece, para a próxima vez.

Iniciar a hora e verificar a taxa de alteração

Ache a data que foi escrita pela última vez. Entre no sistema como superusuário Digite:

clock -a
Isto configura a hora do kernel para se ajustar com a hora atual da CMOS. Disque 130 e ouça a hora. Digite:
date
e pressione enter quando ouvir o bip ( do 130 ). Enquanto espera, anote a hora que foi dita, e não desligue o telefone. Isto diz a você qual era a hora que estava na sua máquina, quando deveria estar exatamente no minuto. Agora, digite
date hh:mm:00
usando o minuto *seguinte* ao aquele que foi dito ( no 130 ), e pressione enter quando ouvir o bip de novo ( agora você pode desligar ). Para hh use a hora local. Isto configura a ``hora do kernel''. Digite:
clock -w
o qual escreve a nova hora (correta) para o relógio da CMOS. Digite:
date +%j
( ou ``date +%s'' se foi este o comando utilizado anteriormente )

Agora você tem três números ( duas datas e uma hora ) que irão permitir o cálculo da taxa de alteração.

Calculando o fator de correção

No momento em que foi executado ``date'', sua máquina estava rápida ou lenta? Se estava rápida, será necessário subtrair alguns segundos, então, escreva isso como um número negativo. Se estava lenta, deve-se adicionar alguns segundos, então, escreva como um número positivo.

Agora, subtraia as duas datas. Se foi usado ``date +%j'', os números representam o dia do ano ( 1- 365, ou 1-366 em alguns anos ). Se o dia 1 de Janeiro foi passado desde que a última mudança do relógio foi feita, então, será necessário adicionar 365 ( ou 366 ) ao segundo número. Se foi usado ``date +%s'', então, o numero é em segundos, e será necessário dividí-lo por 86400 para obter-se os dias.

Se você já tem um fator de correção no arquivo /etc/adjtime, será necessário calcular o número de segundos que você já corrigiu. Se o fator de correção aumentou, este número terá o sinal oposto do medido; se diminuiu, ele terá o mesmo sinal do medido. Multiplique o antigo fator de correção pelo número de dias e, adicione o novo número de segundos ( adição com sinais -- se os dois número têm o mesmo sinal, será obtido um número maior, se os sinais forem opostos, o número será menor ).

Divida então o número total de segundos pelo número de dias para obter o novo fator de correção, e coloque-o no arquivo /etc/adjtime substituindo o antigo valor. Anote a nova data ( em segundos ou dias ) para a próxima vez.

Eis aqui como o meu arquivo /etc/adjtime se encontra:

-9.600000 845082716 -0.250655
( Observe que 9.6 segundos por dia é bem próximo de cinco minutos por mês! )


Página seguinte Página anterior Índice