Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Data, hora e timezone em sistemas GNU-Linux

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo Data, hora e timezone em sistemas GNU-Linux

    Este artigo tem como principal objetivo descrever o uso dos comandos hwclock e date em sistemas GNU/Linux.

    Relógio baseado em hardware (hardware clock)
    É 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:

    # hwclock --set --date="10/13/2006 10:10:01" --utc;

    3) Pressionar <ENTER>;

    * --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.:

    # hwclock --set --date="01/25/2006 11:15:01" --badyear


    * --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.:

    # hwclock --set --date="01/25/2006 11:15:01" --noadjfile

    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:

    $ man hwclock

    Relógio baseado no sistema (System Time)
    É tempo mantido por um relógio dentro do Kernel Linux e controlado por um "timer interrupt".

    Diferente do "hardware clock", o "System time" só é utilizado quando o sistema GNU/Linux está em execução na máquina.

    O "System time" é o número de segundos desde 1 de Janeiro de 1970 (UTC).

    O "System time" é o tempo que importa para sistema GNU/Linux, pois "hardware clock" mantém o relógio do sistema enquanto o GNU/Linux não está em execução. O "system time" é inicializado de acordo o valor do "hardware clock" quando inicializamos o sistema.

    O comando date exibe e configura a data e hora do sistema (system time).

    Formato de utilização do comando:

    date [OPTION]... [+FORMAT]
    date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]


    Opções para comando date:

    * -d ou --date=STRING: Exibe a data informada pela STRING. Ex.:

    # date -d "11/20/2006 11:25:00"
    ou
    # date --date="11/20/2006 11:25:00"

    Resultado: Seg Nov 20 11:25:00 BRDT 2006

    OBS: BRDT indica que a data do sistema está dentro do período de horário de verão informado por /etc/localtime.

    * -f ou file=DATAFILE: Igual a opção -d, porém executará o comando para cada linha contida no arquivo. Ex.:

    # date -f /home/xyz/arquivo.txt
    ou
    # date --file=/home/xyz/arquivo.txt

    * -ITIMESPEC, --iso-8601: PENDENTE testes.

    * -r ou --reference=FILE: Exibe a última data/hora de modificação de um arquivo. Ex.:

    # date -r /home/xyz/arquivo.txt
    ou
    # date --reference=/home/xyz/arquivo.txt

    * -R ou --rfc-2822: Exibe a data/hora no formato RFC 2822. Ex.:

    # date -R
    ou
    # date --rfc-2822

    Resultado: Wed, 15 Nov 2006 11:44:10 -0200

    * -s ou --set=STRING: Ajusta o tempo de acordo com a STRING. Ex.:

    # date -s "11/15/2006 11:58:00"

    ou
    # date --set "11/15/2006 11:58:00"

    Resultado: Qua Nov 15 11:58:00 BRDT 2006

    OBS: a opção -s ou --set pode ser usada para alterar somente a data ou a hora.

    * -u ou --utc ou --universal: Exibe ou ajusta a data/hora no formato UTC (Coordinated Universal Time). Ex.:

    # date -u
    ou
    # date --utc
    ou
    # date --universal

    Resultado: Qua Nov 15 13:59:58 UTC 2006

    OBS: O exemplo acima trata somente da exibição da data/hora no formato UTC, para ajuste da data/hora em formato UTC esta opção deve ser combinada com a opção -s ou --set.

    * --help: Está opção exibe a tela de ajuda.

    * --version: Exibe informações sobre a versão do comando.

    Para mais detalhes consulte o manual do comando date:

    $ man date

    Credito: Samir
X
Working...
X