Co je to Unix Epoch, a jak Unix Time práci?

Nov 10, 2025
Linux
Michail Leonov / Shutterstock

Unix ukládá čas jako počet sekund od 1. ledna 1970. A to znamená Linux také. Vysvětlujeme tento zdánlivě zvláštní systém, a proč byl Dened naplánován na 2038.

První unix epocha

Goethe ( 1749-1832. ) deklarované "každou sekundu je nekonečná hodnota." To je pravda, každý máme jen tolik sekund na planetě Zemi, a my nevíme, kdy naše poslední sekunda bude. Ale víme naše narozeniny, a když začalo naše smrtelné odpočítávání.

Unix. -jako Britská královna -Has dva narozeniny. Nebo přesněji, tam byly dvě samostatné příležitosti, na kterých začalo počítat sekundy své existence. Poprvé Unix začal počítat od půlnoci 1. ledna 1971.

Můžeme to zcela jasně vidět přezkoumáním sekce prvního vydání Příručka pro programátor UNIX , datum 3. listopadu 1971. Přejděte dolů na stránku 13 této části a uvidíte popis (nyní zaniklé) čas příkaz. Řekli jsme to " čas Vrátí čas od 00:00:00, 1. ledna 1971, měřeno v šedietích sekundy. "

Kalendáře a časové systémy měří čas začínající v minulosti v minulosti, jako je kosmologická událost, založení říše, nebo úspěch revoluce. V operačních systémech, libovolný čas a datum jsou vybrány jako bod, ze kterého spustí počítání. To je epocha Pro tento operační systém.

UNIX používal 32bitové nepodepsané celé číslo, aby držel počet 60. druhý od epochy. Jedná se o numerickou proměnnou schopnou přidržet hodnoty v rozsahu 0 až 4,294,967,295 (2 32. -1). To zní jako hodně. Ale pult se zvýšil na 60 krát za sekundu a jako programátorský manuál ukazuje, "chronologicky smýšlející uživatel si všimne, že 2 ** 32 Sixtiets z druhé je pouze asi 2,5 roku."

S rychlostí spotřeby 60 čísel za sekundu by čítač zasáhl maximální hodnotu 8. dubna 1973, o něco méně než 829 dní později.

Druhá unixová epocha

Netřeba dodávat, že to bylo jednat rychle. Integer nepodepsané bylo nahrazeno 32bitovým podepsaný celé číslo. Může se zdát překvapující volbou, protože podepsaný celé číslo je schopen držet menší počet pozitivních hodnot - 2,147,483,647 (2 31. \ t ) -Than Insigned Integer. Rychlost spotřeby však byla také snížena z 60. sekundy do všech sekund.

Trvá déle, než se počítá od 0 do 2 147 483 647 počítání jednoho čísla za sekundu, než se má počítat od 0 do 4,294,967,295 při 60 počtech za sekundu. A docela marže. Nový režim by nezasáhl svou maximální hodnotu jen něco málo přes 68 let. Vypadalo to tak daleko v budoucnu, že epocha byla dokonce resetována na dřívější bod v čase. Nová epocha byla nastavena na půlnoc 1. ledna 1970, UTC.

Že bod 68 let v budoucnu je nyní nepřítele. Abychom byli přesní, dostaneme se na 03:14:07 UTC 19. ledna 2038.

Jednoduchý, ale efektivní schéma

Pomocí jediného celého čísla počítat počet časových kroků z daného okamžiku je efektivní způsob uložení času. Nemusíte ukládat komplikované struktury let, měsíců, dnů a časů. A je to země, národní prostředí a časové pásmo nezávislé.

Vynásobení čísla do celého čísla podle velikosti časového kroku-v tomto případě, jeden druhý-vám dává čas od epochy a převedení z toho, že formátů specifických pro národní prostředí s úpravami časového pásma je poměrně triviální.

Dává vám však vestavěný horní hranici. Dříve nebo později budete zasáhnout maximální hodnotu, kterou můžete držet ve zvoleném typu proměnné. V době psaní tohoto článku je rok 2038 pouze 17 let.

Je to podobné, ale poněkud odlišný od problému s počátkem počítačových systémů z minulého století s použitím dvou číslic pro uložení roky. Když kalendář převalil do nového roku a nové století z roku 2000, by se hodnota rok uloženy jako „00“ být interpretován jako 2000 nebo 1900?

Korekce takzvaný „ Millenium Bug “Odhaduje se, že náklady USA sám více než 100 miliard $, a aby vzali tisíce-letý muž na adresu po celém světě. Byly tam nějaké problémy v prvních dnech ledna 2000, ale nic jako katastrofy, které by se konaly kdyby byla chyba ignorována.

Soudný den se odkládá

Vzhledem k tomu, Linux a všechny provozní Unix-lookalike systémy mají stejný problém, problém roce 2038 byla brána vážně nějakou dobu se opravuje se přidává do jádra od roku 2014. To je pokračující s opravami se přidává do jádra naposledy v lednu 2020, aby se zabývala problémem celé číslo 32-bit.

Samozřejmě, že pracovní Linux počítač obsahuje mnohem víc než jádro. Všechna provozní inženýrských sítí a Userland aplikací, které využívají systémového času přes různé API a rozhraní je třeba upravit tak, aby očekávat, že 64-bitové hodnoty. souborové systémy příliš musí být aktualizovány přijímat 64bitové časové značky pro soubory a adresáře.

Linux je všude . Havárie v Linuxu by znamenalo selhání všech možných systémů založených na počítačích. Linux běží většina z webu, většina z veřejného cloudu, a dokonce i kosmické lodi. To běží inteligentní domy a self-řídit auta. Smartphony mají Unix-odvozený jádro na svém srdci. Prakticky něco podobného síťových firewallů, směrovačů a širokopásmových modemů-, který vložené operační systémy uvnitř běhu na Linuxu.

Je skvělé, že Linux je na dobré cestě, aby byl opraven. Budeme-li nainstalovat aktualizace a to bude to. Ale jaké jsou šance, že všechny z těchto zařízení budou barevné skvrny a aktualizované? Mnoho z nich ani nebude v provozu do té doby, takže to bude diskutabilní, ale někteří budou i nadále ucpání pryč. Zastrčený v temnu a prašných vybrání v serverové místnosti a rack skříně možná, ale bude tam pracovat v tichosti, zatímco vteřin klíště by asi do čtvrt na tři ráno dne 19. ledna 2038.

Ale zařízení jako, že by měla být malá menšina. Drtivá většina systémů bude vidět čas krize přicházejí a odcházejí bez incidentu. Opět budeme moci relaxovat. Alespoň až do roku 2486 přístupů, což s sebou přináší přesně stejný problém pro systémy, které používají celá čísla založených 64bitové počítat čas od epochy.

Datum Command

Můžeme použijte datum příkaz ověřit Linux a jiné deriváty Unix stále použít původní, jednoduché schéma ukládání časovou hodnotu jako počet sekund od epochy.

Za použití datum Příkaz bez parametrů vypíše aktuální datum a čas do okna terminálu. Vy jste také ukázaly, časové pásmo, že čas je upraven pro. EDT je ​​Eastern Daylight Time, což znamená, že naše testovací počítač ve východním časovém pásmu, a letního je ve skutečnosti. Když letní čas není ve skutečnosti, východní časové pásmo používá východního standardního času.

Chcete-li zobrazit podkladové celočíselnou hodnotu, můžeme použít formát displeje řetězec. Formát struny mají znaménko plus „+“ jako jejich první znak. Tyto „% s“ Formát symbolické znamená „ukazují sekund od epochy.“

Vezmeme-li hodnotu sekund vrácenou datum a krmiv zpět do datum příkaz s. \ t -d. (Zobrazení času popsaný řetězec) volby, bude to převést zpět na obyčejné datum a čas.

 datum 
 datum +% s 
 datum -d  @ 1633183955  

Můžeme ukázat, že celočíselná hodnota skutečně představuje čas tím, že zobrazuje počet sekund, spaní po dobu 10 sekund, a ukazuje nový počet sekund. Tyto dvě celočíselné hodnoty se budou lišit podle přesně 10.

 datum +% s & amp; & Co. sleep 10 amp; & amp; datum +% s 

Viděli jsme, že můžeme projít několik sekund na datum příkazy a převede na datum a čas pro nás. Pokud budeme dělat jen to pomocí nula sekund jako vstupní naše hodnoty, datum Měl-li tisknout datum a čas Unix epochy.

 tz = '' UTC datum -d  '0  + '% x% R'

Příkaz porouchá takto:

  • TZ =‘UTC‘ : Epocha byl nastaven pomocí Coordinated Universal Time (UTC, takže musíme říci datum používat UTC. Dále jen „TZ =“ konstrukt nastavení skutečného časového pásma pouze pro aktuální příkaz.
  • datum : The. datum příkaz.
  • -d. @ 0 : Říkáme datum použít řetězec jako vstup, není vhodná doba „právě teď.“ Řetězec míjíme v drží nula sekund.
  • +‘% X% R‘ : Výstupní formát řetězce. Formát tokenu „% x“ říká, datum Pro zobrazení rok, měsíc a den. Dále jen „% R“ formátu symbolické pověřuje datum používat 24hodinový formát pro hodiny a minuty. Vzhledem k tomu, tam jsou mezery ve formátu řetězce, můžeme zabalit celý řetězec v jednoduchých uvozovkách“ ' “Takže to řetězec považován za jeden bod.

Jak se dalo očekávat, výstup je půlnoci 1. ledna 1970.

PŘÍBUZNÝ: Jak zobrazit data a času v Linuxu terminálu (a používat jej v Bash skriptů)

Do příště

V jednoduchosti je často nejlepší. Počítání sekund od pevného nulového bodu, je nejjednodušší způsob, jak označit plynutí času. Ale postupem času přináší nové výzvy. S opravami, které byly zavedeny, to vypadá, že jsme jasný až do roku 2486.

Myslím, že to je bezpečné říkat, budeme bát, že o něco blíž k času.


Linux - Nejoblíbenější články

Jak si vybrat mezi Ubuntu, Kubuntu, Xubuntu a Lubuntu

Linux Mar 19, 2025

Tomqs / Shutterstock.com. Je tu více než jeden Ubuntu. Můžete si stáhnout Ubuntu, Kubuntu, Xubuntu nebo Lubuntu: Ale jaký je rozdíl, a který byste si m..


Co je „root“ na Linuxu?

Linux Jul 7, 2025

FATMAWATI ACHMAD ZAENURI / Shutterstock.com Uživatel root je nejsilnější subjekt na Linux vesmíru s neomezenými pravomocemi, pro lepší nebo horší. ..


Tento nový Linux herní notebook má specifikace pro spuštění cokoliv

Linux Oct 20, 2025

Juno počítače Linux a hraní se začínají spojit mnohem více v poslední době. . \ T Parní deck je na cestě s nainstalovanou Linuxem a Juno právě ..


můžete nainstalovat Linux na M1 Apple Silicon Mac?

Linux Nov 12, 2025

Ne každý si koupí Mac se pouze běh MacOS. Špatnou zprávou je, že od listopadu 2021, nativní podpora Linux na Apple křemíku ještě není možné. Dochází k pokroku, nicméně..


Jak nainstalovat Linux na M1 Mac S Apple křemíku

Linux Nov 11, 2025

Native Linux podpora pro novou architekturu APPLES ARRIGHTURE není dosud připravena, ale můžete spustit Linux na M1. , M1 Pro, nebo M1 Max pomocí a virtuální stroj ..


Jak vyjmenovat proměnné prostředí na Linuxu

Linux Oct 31, 2025

Na Linuxu mají proměnné prostředí důležité hodnoty a nastavení. Skripty, aplikace a skořápky tyto hodnoty čte, často na konfiguraci sebe sama nebo pro ovládání jejich chování...


7 chyb, které noví uživatelé Linuxu dělají (a jak se jim vyhnout)

Linux Nov 11, 2025

Učení Linuxu může být frustrující zážitek, kde se všechno malá věc cítí jako bitva. Vyhýbání se těmto běžným chybám usnadní a přijetí Linuxu bude mnohem snazší a mén..


Jak získat svou veřejnou IP do skriptu Linux Bash

Linux Nov 9, 2025

Pokud se chcete vzdáleně připojit k počítači, budete potřebovat externí IP adresu. Najít to ruční je snadné, ale zde je návod, jak to najít ze skriptu Linux. Interní a exte..


Kategorie