Mi az Unix idő és mikor volt a Unix korszaka?

Mi az Unix idő és mikor volt a Unix korszaka?

Miért van a Unixnak saját időfelfogása? Mi a korszak és mi az Y2038 probléma?





A Unix idő egy bizonyos dátum és idő ábrázolásának eszköze, amelyet a Linux, a macOS és sok más interoperábilis rendszer használ. Annyira elterjedt, hogy valószínűleg tudat nélkül használja. Ha azonban megérti a Unix időt, sok összefüggésben észleli azt. Számos eszköz segíthet a Unix idővel való munkában.





Mi a Unix idő célja?

A Unix idő a rögzített idő és dátum óta eltelt összes másodperc. Ez egy dátum/idő (vagy időbélyeg) formátum, amely eltér a megszokott, ember által olvasható dátumoktól és időpontoktól. Ez pusztán hatékonysági okokból történik. Sokkal kevesebb helyet foglal el egyetlen másodpercet ábrázoló szám tárolása, mint az év, hónap, óra stb.





Természetesen modern értelemben a térbeli különbség egyáltalán nem olyan nagy. De vegye figyelembe, hogy a Unix az 1960 -as évek végén jött létre, amikor a rendelkezésre álló tárhely jóval kisebb volt. Az időbélyegeket is gyakran használják, így a tárhelyük összeadódik. Például minden fájlhoz három időbélyeg tartozik.

A formátumot nagyjából lehetetlen fejben lefordítani, hacsak nem matematikai zseni. De még mindig vannak előnyei az olvashatóbb alternatívákkal szemben, mint pl 2015. október 21., szerda, 07:28:00 GMT . Két Unix időbélyeget nagyon egyszerűen, egy pillanat alatt rendelhet. Általában gyorsabb is a két időbélyeg közötti különbség megállapítása. Ez különösen igaz az egymáshoz közeli dátumokra, például a szomszédos napokra.



A korszakról

Tehát a Unix idő egy másodperc összesített száma egy adott időpont után. De mi ez az időpont? Az 00:00:00 UTC tovább 1970. január 1 . Ezt gyakran Unix -korszaknak is nevezik. A programozók kényelemből ezt a dátumot választották a korszaknak, mivel ez volt a legközelebbi kerek dátum, amikor kitalálták a Unix időt.

Lehet, hogy látta ezt a dátumot, amikor valami baj történt. Ez egyértelműen hiba, de nagyon furcsán néz ki, amikor sok születésünk előtti időpontot eredményez! Teljesen érthető azonban, ha ismeri a Unix időt. Ha bármely rendszer olyan időbélyeget próbál megjeleníteni, amelynek nincs értéke, akkor gyakran lefordítja 0 -ra, és a pontos korszak dátumát eredményezi.





hogyan lehet látni a kép dpi -t

A Unix Time Data Format

Szigorúan véve nincs ilyen. Az eredeti adattípus 32 bites egész szám volt, és ez gyakran így is marad, még sokkal erősebb rendszerekben is.

Ez az adattípus lehetővé teszi, hogy az érték összesen 2^32 másodpercet tároljon, ami alig több mint 136 év. Ez az érték általában aláírt, azaz lehet negatív vagy pozitív. Tehát általában 68 évet jelent a korszak mindkét oldalán, azaz 1902-2038 között.





Ez persze még korlátozott időszak. De az időbélyeg formátum elsődleges használata olyan fogalmakra vonatkozott, mint a fájlmódosítás. Nagy szükség volt arra, hogy a jelenhez közeli időt jelenítsük meg, nem pedig az ókori történelmet vagy a jövőt. Még az olyan alkalmazásoknál is, mint a naptárak, ritkán van szükség néhány évtizednél későbbi dátumokra.

De ez nem jelenti azt, hogy ez a korlátozott időtartam problémamentes…

A 2038 -as év problémája

Az Y2K hiba (az egyik legrosszabb programozási hiba a történelemben) hatással volt a számítógépes rendszerekre, amelyek éveket kétjegyű értékként tároltak. Amikor eljött a 2000 -es év, az ilyen rendszerek úgy kezelték, mintha 1900 lenne. Ebben az esetben ez nem volt olyan katasztrofális, mint amilyennek tartottak, főleg azért, mert sokan sok időt és erőfeszítést töltöttek előre, felkészülve rá.

Ha az előző részben figyelt, lehet, hogy hasonló problémát észlelt, amely hatással lehet a Unix idejére. Nos, a Unix time -nak saját adatproblémája van: az Y2k38 probléma. (Gyakran problémaként, nem hibaként emlegetik; talán optimistábbak lettünk 2000 óta!) Amikor a Unix ideje szó szerint lejár 2038 -ban, a rendszerek az új dátumokat 1902 -nek vagy 1970 -nek fogják kezelni. Vagy esetleg Egyszerűen kudarcot vall.

Legalábbis ez a probléma nem fog ránk rúgni szilveszter éjfélkor. A 32 bites Unix idő utolsó másodperce március 19-re esik. Esetenként valószínűleg a legtöbb rendszert frissítjük 2038 -ra, különben addigra már elavultak.

Néhány hasznos időbélyegző forrás

Az Epoch Converter webhely valószínűleg a legátfogóbb elérhető időbélyeg -átalakító. Először az aktuális Unix idő megjelenítésével kezdődik-valós időben-, és ezen felül szinte minden elképzelhető funkciót hozzáad. Fő célja az időbélyegek és az ember által olvasható dátumok közötti átváltás, mindkét irányban.

A Dan's Tools a hasznos webes alkalmazások hatalmas gyűjteménye, amelyek közül az egyik a időbélyeg átalakító . Alapvetőbb, de nagyon tiszta megjelenítésű és könnyen használható.

Az idö egy másik, még minimalista megjelenést mutat be. Számos formátumban mutatja az időt, beleértve a Unix időt. Ez tartalmazza az aktuális időt az oldal címében, ami hasznos.

A Unix Time használata a parancssori eszközökkel

Linuxon és macOS -on a dátum program a fő segédprogram a dátum/idő kezeléséhez, beleértve a Unix időbélyegzőit. Minden érv nélkül hívva visszaadja az aktuális dátumot/időt ember által olvasható formátumban:

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

Ha szüksége van az aktuális dátumra/időre Unix időben, használja a +%s érv:

$ date +%s
1612960114

Az ember által olvasható dátumból időbélyeggé alakíthatja át a -d jelöli meg, ha az Ön verziója dátum támogatja. A legtöbb Linux verziónak alapértelmezés szerint:

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

MacOS -on, dátum egy másik program, amely más jelzőkészletet igényel:

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

Ha a másik irányba megy, akkor a Unix időbélyegből konvertálhat a -r zászló:

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

Néhány más program a %s formátum a Unix idő kezelésére. Például, ha egy fájl módosítási dátumát szeretné megjeleníteni Unix időben, a Linux verziója ls , a következőket használhatja:

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

Hogyan használjuk a Unix időt a programozási nyelveken

A PHP rendelkezik idő() függvény, amely az aktuális Unix időbélyeget adja vissza. Az dátum() függvény időbélyeget vesz fel második argumentumaként:

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

A JavaScript érdekes módon közelíti meg a dolgokat. Van egy Dátum.most () módszer a Unix korszak óta eltelt ezredmásodpercek számának meghatározására. Természetesen oszthatja ezt 1000 -gyel, és kerekítheti az eredményt, hogy az egyenértékű Unix időt adja meg másodpercben:

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

A Unix idő megértése

A Unix idő egy egyszerű fogalom, amely sok helyen felmerül. Ha már megértette, akkor nagyon hasznos lehet például az időkülönbségek kiszámításakor. Azt is felismerheti, hogy mikor lehet bizonyos hibák oka.

Az olyan fogalmak, mint a korszak és az időbélyegek fontos részét képezik a Linux használatának megkezdéséhez. Ha többet szeretne megtudni az olyan alapvető dolgokról, mint pl ls , nézze meg útmutatónkat az alapvető Linux parancsokhoz.

Részvény Részvény Csipog Email 9 alapvető parancs a Linux használatához

Szeretné megismerni a Linuxot? Kezdje ezekkel az alapvető Linux parancsokkal a szabványos számítási feladatok elsajátításához.

Olvassa tovább
Kapcsolódó témák A szerzőről Bobby Jack(58 cikk megjelent)

Bobby technológiai rajongó, aki két évtized nagy részében szoftverfejlesztőként dolgozott. Szenvedélyesen szereti a játékot, a Switch Player Magazin Vélemények szerkesztőjeként dolgozik, és elmerül az online közzététel és webfejlesztés minden területén.

Továbbiak Bobby Jack -től

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide