The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX para Dummies Perguntas & Respostas > Respostas a Perguntas Frequentes > Dicas e Tutoriais
.
google unix.com



Dicas e Tutoriais Helpful artigos de nossos usuários.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Compreender esta Makefile the_learner Alto Nível de programação 5 06-14-2007 01:55
Precisa de Ajuda Entendimento um comando Unix chris86 UNIX para Dummies Perguntas & Respostas 6 10-10-2006 03:35
Um pouco de compreensão FIFOs ajudar? Deckard Linux 0 11-01-2005 01:46
necessitam de uma maior compreensão da init.d jigarlakhani UNIX & avançada para usuários experientes 1 09-20-2002 03:11

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-20-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.119
Entendimento Unix cronometragem

Tempo interno
Internamente, um sistema Unix mantém tempo que o número de segundos desde o Unix Epoch. O Unix Epoch foi à meia-noite 1. De janeiro de 1970 UTC. Na região oriental do fuso horário de os E.U. que foi 31. De dezembro de 1969 às 19:00. No começo deste artigo, o tempo é 1171733878. Estou usando o NTP (Network Time Protocol) para manter o relógio do computador em sincronia. Então, no exato instante que o meu computador pensei que era 1171733878, provavelmente o mesmo que fizeram sua. Cada computador deve estar de acordo quanto ao tempo que ele é. Não importa qual fuso horário em seu computador reside ou fuso horário em que você reside. Se eu tivesse escrito para um ficheiro durante a segunda, Unix teria gravado a modificação tempo que 1171733878.

Unix era tradicionalmente uma vez assinados 32 bits inteiro. Isso significa que o tempo máximo é 2147483647, que, no Leste da TimeZone os E.U. seria 18. De janeiro de 2038 às 22:14:07. O plano é para que isto se expandir para um inteiro 64 bits antes de então. Unix segundo uma contagem frente-a-um. Após 1171733878, na próxima segunda que o meu sistema vai conhecer é 1171733879. Uma vez que é syncronized, NTP obras de encurtamento ou alongamento de um segundo. Posso obter o tempo, chamando o sistema de chamada tempo (). Se eu quiser fazer alguma coisa melhor do que o segundo, o próximo mais acurado interface é chamada de sistema vezes (). vezes () principal objectivo é a obtenção de uma estrutura de dados relativos ao sistema de uso. Mas o regresso código também é útil ... é a hora no relógio carrapatos. Relógio carrapatos começar em algum ponto arbitrário no passado (muitas vezes arranque tempo) e eles sempre antecipadamente o kernel relógio rotina será executado. Quantos relógio carrapatos por segundo pode variar. Você pode chamar sysconf (_SC_CLK_TCK) para descobrir o seu valor. 100 é valor comum nos dias de hoje. Sistemas mais antigos utilizados 60. 100 e 60 são os dois únicos valores que tenho visto. Relógio carrapatos também são retornados como um inteiro assinado. Então, após cerca de um ano, o número irá reverter a zero. Excepto capotamento, relógio carrapatos também antecipadamente um-por-um. (Relógio carrapatos são frequentemente chamados de "jiffies" pelo Linux folks). Existe também um outro sistema de chamada, gettimeofday () que retorna o tempo desde o Unix Epoch em segundos e microssegundos. gettimeofday () é necessária para a existência e utilização microsegundo precisão. No entanto, a precisão é explicitamente indeterminado. O microsegundo não adiantam um-por-um, em qualquer sistema que tenho visto. Parto do princípio de que sistemas Unix são bastante boas com hundreths de uma segunda e talvez até mesmo alguns casos é milissegundos. Mas eu não iria assumir qualquer precisão para além disso.

Humano Readable timestamps
Agora que sabemos como Unix mantém tempo, vamos passar a um tema diferente: Como exibir um tempo de usuário. Poucos usuários ficarão felizes com uma hora a ser exibido como 1171733878. Como estou na região oriental do fuso horário de os E.U., gostaria de ver algo como 12:37:58 em 17 fev de 2007. Mas uma pessoa em Los Angeles Califórnia deseja algo parecido com 9:37:58 em 17 fev de 2007. Escrevi um pouco perl script para exibir o tempo formatado quando administrada como um número 1171733878. Aqui é a saída como ele deve aparecer em ambos os fusos horários do Pacífico Oriental e por alguns timestamps cuidadosamente selecionados:
Leste:
1173596399 domingo 2007/03/11 01:59:59 Hora padrão
1173596400 domingo 2007/03/11 03:00:00 Daylight Saving Time
1173607199 domingo 2007/03/11 05:59:59 Daylight Saving Time
1173607200 domingo 2007/03/11 06:00:00 Daylight Saving Time
Pacífico:
1173596399 sábado 2007/03/10 22:59:59 Hora padrão
1173596400 sábado 2007/03/10 23:00:00 Hora padrão
1173607199 domingo 2007/03/11 01:59:59 Hora padrão
1173607200 domingo 2007/03/11 03:00:00 Daylight Saving Time
Repare que o tempo interno do Unix não mudar com o início de horário de verão. O que acontece é que uma nova regra para o modo de exibição do tempo produz efeitos. Para converter interno tempo para uma hora, Unix precisa saber qual o fuso horário para uso. E é preciso saber se a Hora de Verão está em vigor. Existem várias sub-rotinas que podem ser chamados para formatar uma hora. Todas estas eventualmente invocar tzset () para determinar o fuso horário e ao estado de Daylight Saving. E tzset verifica sempre para a variável de ambiente TZ para descobrir o que o usuário deseja. Se você não uma variável de ambiente TZ, tzset () vai com algum tipo de defeito que pode variar de sistema para sistema. O ambiente TZ variável é frequentemente definido para algo como EST5EDT4 que é o que eu uso. Este diz que estou em um fuso horário EST, que é chamado de Tempo Universal compensado por 5 horas e durante o dia Daylight Saving meu fuso horário EDT que é chamado de Tempo Universal é compensada por 4 horas. Para saber quando Hora de Verão está em vigor, tzset analisará alguns dados no arquivo. Que imagem (e do que o arquivo está no formato) varia de sistema para sistema. Os patches que estão disponíveis para este ano da mudança na Daylight Saving realmente deve ser pouco mais do que algumas revisões para estes arquivos.

Tempo Universal
Para além de saber sobre o seu fuso horário, um Unix devem ser capazes de usar Tempo Universal (que é praticamente o mesmo que o antigo Greenwich Mean Time). Isto é o que "data-u" faz. A definição para o Tempo Universal é bem conhecido e não impliquem alterações horário de verão. O Tempo Universal definição pode ser construir em rotinas da data em vez de usar o arquivo de dados para tzset (). Isso pode ser verdade mesmo se uma entrada está presente para UTC. Correio programas utilizam frequentemente UTC timestamps.
 

Marcadores

Tags
relógio, mtime, cronometragem

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 11:02.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0