É um relógio disponibilizado pela CPU. Esse relógio mantém-se em funcionamento mesmo quando a CPU está desligada.
OBS: Para que a CPU mantenha esse relógio em funcionamento, mesmo quando a máquina está desligada, a bateria localizada na CPU deve estar em perfeitas condições.
Em sistemas GNU/Linux o comando utilizado para consulta e ajuste do "hardware clock" é hwclock.
O sistema GNU/Linux utiliza o horário do "hardware clock" no momento da inicialização para ajustar o "System time";
Segue abaixo um pequeno guia de referência sobre o aplicativo hwclock:
Funções do aplicativo hwclock:
--help ou -h: Exibe a tela de ajuda do aplicativo. Ex.:
# hwclock -h
ou # hwclock --help
--show ou -r: Efetua uma consulta e exibe a data e hora do "hardware clock". A hora mostrada é sempre exibida como definido em localtime, mesmo que o "hardware clock" seja mantido em UTC. Ex.:
# hwclock --show
ou: # hwclock -r
O exemplo acima apresenta como resulta a hora mantida pelo "hardware clock", sempre como localtime.
--set: Ajusta a data e o hora de acordo com a opção --date=string_date. Ex.:
# hwclock --set --date="22/04/2006 10:10:01" --utc
ou --localtime
As opções --date, --utc e --localtime serão explicadas abaixo.
--hctosys: Ajusta o "System time" a partir da data e hora do "hardware clock". Também configura o valor do "time zone" do kernel igual ao definido na variável de ambiente TZ ou em /usr/share/zoneinfo. Ex.:
# hwclock --hctosys
--systohc: Ajusta o "hardware clock" a partir do "System time". Ex.:
# hwclock --systohc
--adjust: Adiciona ou subtrai um valor que representa um desvio sistemático do "hardware clock" desde a última vez que este foi configurado ou ajustado. É sabido que o "hardware clock" não é muito preciso, mas muitas vezes podemos saber o quanto ele é impreciso, pois ele sempre ganha ou perde a mesma quantidade de tempo a cada dia. Isso é chamado desvio sistemático.
Este ajuste funciona da seguinte maneira: o comando hwclock mantém o arquivo /etc/adjtime; esse arquivo armazena informações relativas ao ajuste do horário. Imagine que você inicia um sistema sem a existência do arquivo /etc/adjtime e executa os seguintes passos:
1) ajusta o "hardware clock" ->
# hwclock --set --date="22/04/2006 10:10:01"
Será criado o arquivo /etc/adjtime e o "hardware clock" será ajustado. Será gravado no arquivo o tempo referente ao último ajuste do horário.
2) você verificou que 5 dias depois, o "hardware clock", ganhou 10 segundos; 10 segundos em 5 dias = 2 segundos por dia.
3) você então ajusta o "hardware clock" novamente:
# hwclock --set --date= (subtraindo 10 segundos)
O arquivo /etc/adjtime será atualizado para informar a hora informada no comando anterior como a hora do último ajuste e o desvio com uma taxa de 2 segundos por dia.
OBS: Dessa forma o administrador do sistema pode executar diariamente o comando:
# hwclock --adjust
para subtrair 2 segundos.
--getepoch: Exibe em "stdout" o valor "epoch" do "hardware clock" do kernel. O kernel Linux mantém o valor "epoch" para o "hardware clock" somente em máquinas Alpha;
--setepoch: Ajusta o valor "epoch" do "hardware clock" para o valor da opção --epoch. O kernel Linux mantém o valor "epoch" para o "hardware clock" somente em máquinas Alpha;
--version ou -v: Exibe em "stdout" a versão do aplicativo hwclock. Ex.:
# hwclock --version
ou # hwclock -v
Opções usadas com a maioria das funções do aplicativo hwclock:
--utc: indica que o "hardware clock" é mantido em UTC;
--localtime: indica que o "hardware clock" é mantido em local time;
OBS: O administrador deverá escolher se manterá o "hardware clock" em UTC ou "local time". A informação sobre como está configurado o "hardware clock" é mantida no arquivo /etc/adjtime. Caso o arquivo /etc/adjtime não exista, o padrão será "local time".
Ex.: Para facilitar o entendimento, vamos supor a seguinte situação: o administrador de um sistema GNU/Linux percebeu que o "hardware clock" estava incorreto e resolveu ajustá-lo usando o aplicativo hwclock. O administrador procurou no diretório /etc e não encontrou o arquivo adjtime.
Para ajustar o "hardware clock" o administrador executou os seguintes passos:
1) Efetuou logon no sistema como root;
2) Digitou a seguinte linha de comando:
# hwclock --set --date="11/04/2006 16:50:15";
3) Pressionou <ENTER>;
Resultado: O "hardware clock" foi ajustado para:
Data: 04 de Novembro de 2006;
Hora: 16:50:15
Como não foi definido se o "hardware clock" seria mantido em UTC ou "local time", o arquivo /etc/adjtime, que mantém informações sobre o "hardware clock", foi configurado para "local time".
Caso o administrador optasse por manter o "hardware clock" em UTC, ele deveria efetuar os seguintes passos:
1) Efetuar logon no sistema como root;
2) Digitar a seguinte linha de comando:
--directisa: Acessa o barramento ISA diretamente ao invés do arquivo de dispositivo /dev/rtc;
--badyear: Indica que o "hardware clock" é incapaz de armazenar o valor que representa o ano, quando este não esta compreendido entre 1994 - 1999. Ex.:
--date: especifica a data/hora para o qual desejamos atualizar o "hardware clock". Ex.:
# hwclock --set --date="01/25/2006 11:15:01"
--epoch=year Especifica o ano que começa o valor "epoch" do hardware clock. O kernel Linux mantém o valor "epoch" para o "hardware clock" somente em máquinas Alpha;
--noadjfile Não acessa o arquivo /etc/adjtime. Essa opção requer o uso das opções --utc ou --localtime. Ex.:
OBS: Todas as informações acima, foram baseadas no manual (man) do comando hwclock. Há opções do comando hwclock que não foram abordadas nesta documentação. Para detalhes, consulte o manual do comando:
[3] Comentário enviado por malanga em 10/06/2007 - 17:50h
cara,
tive um problema com diferenca de hora em meu linux, por exemplo
dava um date -utc ele me mostrava 14:00 e quando dave um date ele me mostrava 15:30...
isso dava erro por exemplo no servidor de FTP q sempre buscava informacoes de hora entao se eu jogasse um arquivo via ftp ele ficava uma hora e meia criado antes da hora atual...
para resolver o meu problema tive q excluir o localtime do /etc assim, ele pega so um horario ...
como poderia resolver isso sem excluir o arquivo /etc/localtime???