O que é a época do Unix e quando foi a época do Unix?

O que é a época do Unix e quando foi a época do Unix?

Por que o Unix tem seu próprio conceito de tempo? Qual é a época e qual é o problema do Y2038?





A hora Unix é um meio de representar uma data e hora específicas, usada pelo Linux, macOS e muitos outros sistemas interoperáveis. É tão difundido que provavelmente você o está usando sem estar ciente disso. Depois de entender o tempo Unix, no entanto, você o localizará em muitos contextos. Diversas ferramentas podem ajudá-lo a trabalhar com o tempo Unix.





Qual é o propósito do tempo Unix?

O tempo Unix é uma contagem do total de segundos desde uma data e hora fixas. É um formato de data / hora (ou carimbo de data / hora) que parece diferente das datas e horas legíveis a que estamos acostumados. Isso é puramente por razões de eficiência. Demora muito menos espaço para armazenar um único número que representa os segundos do que para armazenar valores separados para o ano, mês, hora, etc.





Claro, em termos modernos, a diferença de espaço não é tanta. Mas considere que o Unix se originou no final dos anos 1960, quando o armazenamento disponível era muito menor. Os carimbos de data / hora também são muito usados, portanto, seu armazenamento aumenta. Por exemplo, cada arquivo possui três carimbos de data / hora associados a ele.

O formato é praticamente impossível de traduzir em sua cabeça, a menos que você seja um gênio matemático. Mas ainda tem algumas vantagens sobre alternativas mais legíveis, como Quarta, 21 de outubro de 2015 07:28:00 GMT . Você pode solicitar dois carimbos de data / hora Unix muito facilmente, em um piscar de olhos. Normalmente, também é mais rápido descobrir a diferença entre dois carimbos de data / hora. Isso é especialmente verdadeiro para datas próximas, como em dias adjacentes.



Sobre a época

Portanto, o tempo Unix é uma contagem total de segundos desde um ponto específico no tempo. Mas qual é esse momento? Seu 00:00:00 UTC sobre 1 de janeiro de 1970 . Isso geralmente é conhecido como Unix Epoch. Os programadores escolheram esta data para a época por conveniência, uma vez que era a data mais próxima quando inventaram a hora Unix.

Você pode muito bem ter visto essa data em que algo deu errado. É claramente um bug, mas que parece muito estranho quando resulta em uma data anterior à época em que muitos de nós nascemos! É completamente compreensível, porém, quando você sabe sobre o tempo do Unix. Se algum sistema está tentando exibir um carimbo de data / hora que não tem nenhum valor, muitas vezes será convertido em 0 e resultará na data de época exata.





wi-fi não tem um endereço IP válido

O formato de dados de tempo Unix

Estritamente falando, não existe um. O tipo de dados original era um número inteiro de 32 bits, e esse costuma ser o caso, mesmo em sistemas muito mais poderosos.

Este tipo de dados permite que o valor armazene um total de 2 ^ 32 segundos, o que é pouco mais de 136 anos. Esse valor normalmente é assinado, o que significa que pode ser negativo ou positivo. Portanto, geralmente representa 68 anos em cada lado da época, ou seja, 1902-2038.





Este ainda é um período limitado, é claro. Mas o uso principal do formato de carimbo de data / hora era para conceitos como modificação de arquivo. A necessidade era muito representar o tempo próximo ao presente, ao invés da história antiga ou distante no futuro. Mesmo para aplicativos como calendários, raramente é necessário representar datas mais do que algumas décadas no futuro.

Mas isso não significa que esse período de tempo limitado seja sem problemas ...

O Problema do Ano 2038

O bug do ano 2000 (um dos piores erros de programação da história) afetou sistemas de computador que armazenavam anos como valores de dois dígitos. Quando chegou o ano de 2000, tais sistemas o trataram como se fosse 1900. No caso, isso não foi tão catastrófico quanto temia, principalmente porque muitas pessoas gastaram muito tempo e esforço com antecedência, preparando-se para isso.

Se você prestou atenção na seção anterior, pode ter notado um problema semelhante que pode afetar o tempo do Unix. Bem, o tempo Unix tem um problema de dados próprio: o problema Y2k38. (Isso costuma ser referido como um problema, não um bug; talvez tenhamos nos tornado mais otimistas desde o ano 2000!) Quando o tempo do Unix literalmente acabar em 2038, os sistemas tratarão as novas datas como 1902 ou 1970. Ou possivelmente eles ' Eu simplesmente falharei.

Pelo menos esse problema não nos atingirá à meia-noite da véspera de Ano Novo. O segundo final do tempo Unix de 32 bits cairá no dia 19 de março. Na eventualidade, provavelmente iremos atualizar a maioria dos sistemas até 2038 ou eles estarão obsoletos até então.

Alguns recursos úteis de carimbo de data / hora

o Conversor de época site é possivelmente o conversor de carimbo de data / hora mais abrangente disponível. Ele começa exibindo o tempo Unix atual - em tempo real - e adiciona quase todos os recursos imagináveis ​​além disso. Seu principal uso é para converter entre carimbos de data / hora e datas legíveis por humanos, em ambas as direções.

Dan’s Tools é uma enorme coleção de aplicativos úteis da web, um dos quais é um conversor de carimbo de data / hora . É mais básico, mas tem uma apresentação muito limpa e é fácil de usar.

Tempo é apresenta outro visual ainda mais minimalista. Mostra a hora em vários formatos, incluindo a hora Unix. Inclui a hora atual no título da página, o que é útil.

Usando Tempo Unix com Ferramentas de Linha de Comando

No Linux e no macOS, o encontro O programa é o utilitário principal para lidar com data / hora, incluindo carimbos de data / hora Unix. Chamado sem nenhum argumento, ele retorna a data / hora atual em um formato legível:

$ date
Wed Feb 10 12:28:30 GMT 2021

Se você precisa da data / hora atual no horário Unix, use o +% s argumento:

$ date +%s
1612960114

Você pode converter de uma data legível para humanos em um carimbo de data / hora usando o -d sinalize se sua versão de encontro suporta isso. A maioria das versões do Linux deve, por padrão:

$ date -d 'Jan 2 1970' +%s
82800

No macOS, encontro é um programa diferente, que requer um conjunto diferente de sinalizadores:

$ date -j -f '%b %d %Y %T' 'Jan 02 1970 00:00:00' '+%s'
82800

Indo na outra direção, você pode converter a partir de um carimbo de data / hora Unix usando o -r bandeira:

$ date -r 1600000000
Sun 13 Sep 2020 13:26:40 BST

Alguns outros programas usam o % s formato para lidar com o tempo Unix. Por exemplo, se você deseja mostrar a data de modificação de um arquivo no tempo Unix, com o Versão Linux de ls , você pode usar o seguinte:

$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

Como Usar Tempo Unix em Linguagens de Programação

PHP tem o Tempo() função que retorna o carimbo de data / hora Unix atual. Seu encontro() função leva um carimbo de data / hora como seu segundo argumento:

$ php -r 'echo date('Y-m-d', time());'
2021-02-11

JavaScript aborda as coisas de uma maneira interessante. Tem um Date.now () método para obter o número de milissegundos desde a época do Unix. Claro, você pode dividir isso por 1.000 e arredondar o resultado para fornecer o tempo Unix equivalente em segundos:

> Math.floor(Date.now() / 1000)
1613083012

Compreendendo o tempo Unix

O tempo Unix é um conceito simples que surge em muitos lugares. Depois de entendê-lo, você pode achar que é bastante útil, ao calcular diferenças de tempo, por exemplo. Você também pode reconhecer quando pode ser a causa de certos bugs.

Conceitos como época e carimbo de data / hora são uma parte importante da introdução ao Linux. Para saber mais sobre itens essenciais, como ls , verifique nosso guia de comandos básicos do Linux.

Compartilhado Compartilhado Tweet O email 9 comandos básicos para começar a usar o Linux

Quer se familiarizar com o Linux? Comece com esses comandos básicos do Linux para aprender as tarefas de computação padrão.

Leia a seguir
Tópicos relacionados Sobre o autor Bobby Jack(58 artigos publicados)

Bobby é um entusiasta da tecnologia que trabalhou como desenvolvedor de software por quase duas décadas. Ele é apaixonado por jogos, trabalha como Editor de Críticas na Switch Player Magazine e está imerso em todos os aspectos da publicação online e desenvolvimento web.

Mais de Bobby Jack

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever