Kaj je čas Unixa in kdaj je bila Unixova epoha?

Kaj je čas Unixa in kdaj je bila Unixova epoha?

Zakaj ima Unix svoj koncept časa? Kaj je obdobje in kaj je problem z Y2038?





Čas Unix je sredstvo za predstavitev določenega datuma in časa, ki ga uporabljajo Linux, macOS in številni drugi interoperabilni sistemi. Je tako razširjen, da ga verjetno uporabljate, ne da bi se tega zavedali. Ko boste razumeli čas Unixa, ga boste opazili v številnih kontekstih. Več orodij vam lahko pomaga pri delu s časom Unix.





Kakšen je namen časa Unix?

Unixov čas je skupno število sekund od določenega časa in datuma. To je oblika datuma/časa (ali časovnega žiga), ki se razlikuje od datumov in časov, ki jih človek lahko bere, na katere smo navajeni. To je izključno zaradi učinkovitosti. Za shranjevanje ene številke, ki predstavlja sekunde, je potrebno veliko manj prostora kot za shranjevanje ločenih vrednosti za leto, mesec, uro itd.





Seveda v sodobnem smislu prostorna razlika sploh ni tako velika. Upoštevajte pa, da je Unix izviral v poznih šestdesetih letih prejšnjega stoletja, ko je bilo razpoložljivega prostora za shranjevanje veliko manj. Veliko se uporabljajo tudi časovne oznake, zato se njihov prostor za shranjevanje poveča. Na primer, vsaka datoteka ima s seboj povezane tri časovne žige.

Oblika je skoraj nemogoče prevesti v vašo glavo, razen če ste matematični genij. Ima pa še vedno nekaj prednosti pred bolj berljivimi alternativami, kot je npr Sreda, 21. oktober 2015 07:28:00 GMT . Dve časovni znamki Unix lahko na hitro naročite. Običajno je tudi hitreje ugotoviti razliko med dvema časovnima oznakama. To še posebej velja za bližnje datume, na primer v sosednjih dneh.



O epohi

Torej je čas Unixa skupno število sekund od določenega trenutka. Kakšen pa je ta čas? Je 00:00:00 UTC naprej 1. januarja 1970 . To se pogosto imenuje Unix Epoch. Programerji so izbrali ta datum za obdobje zaradi udobja, saj je bil to najbližji okrogel datum, ko so izumili čas Unixa.

Morda ste videli ta datum, ko je šlo kaj narobe. Očitno je napaka, vendar je videti zelo čudno, če ima za posledico datum pred rojstvom mnogih od nas! Je pa povsem razumljivo, če poznate čas Unixa. Če kateri koli sistem poskuša prikazati časovni žig, ki nima nobene vrednosti, se pogosto prevede v 0 in povzroči natančen datum epohe.





kako vdreti v naprave, povezane z mojim wifi

Oblika podatkov Unix Time

Strogo rečeno, ni enega. Prvotni tip podatkov je bil 32-bitno celo število, kar pogosto ostaja tako tudi v veliko močnejših sistemih.

Ta tip podatkov omogoča shranjevanje vrednosti skupaj 2^32 sekund, kar je nekaj več kot 136 let. Ta vrednost je običajno podpisana, kar pomeni, da je lahko negativna ali pozitivna. Torej ponavadi predstavlja 68 let na obeh straneh obdobja, to je 1902-2038.





Seveda je to še vedno omejeno obdobje. Toda primarna oblika zapisa časovnega žiga je bila za koncepte, kot je spreminjanje datotek. Potreba po tem, da bi predstavljal čas blizu sedanjosti, ne pa starodavne zgodovine ali daleč v prihodnost, je bila zelo velika. Tudi za aplikacije, kot so koledarji, je le redko treba predstaviti datume za več kot nekaj desetletij v prihodnost.

Toda to ne pomeni, da je omejen časovni razpon brez težav ...

Problem leta 2038

Napaka Y2K (ena najhujših programskih napak v zgodovini) je vplivala na računalniške sisteme, ki so leta shranjevali kot dvomestne vrednosti. Ko je prišlo leto 2000, so ga takšni sistemi obravnavali, kot da bi bilo leto 1900. V tem primeru to ni bilo tako katastrofalno, kot se je balo, predvsem zato, ker je veliko ljudi vnaprej vložilo veliko časa in truda v priprave nanj.

Če ste bili pozorni v prejšnjem razdelku, ste morda opazili podobno težavo, ki bi lahko vplivala na čas Unixa. No, čas Unixa ima svoj podatkovni problem: problem Y2k38. (Pogosto ga imenujemo problem, ne hrošč; morda smo od leta 2000 postali bolj optimistični!) Ko bo čas Unixa dobesedno potekel leta 2038, bodo sistemi nove datume obravnavali bodisi kot 1902 ali 1970. Ali pa morda bo popolnoma propadel.

Vsaj ta problem nas ne bo udaril ob polnoči na silvestrovo. Zadnja sekunda 32-bitnega časa Unixa bo padla 19. marca. V večini primerov bomo večino sistemov verjetno nadgradili do leta 2038 ali pa bodo do takrat vseeno zastareli.

Nekaj ​​uporabnih virov časovnega žiga

The Pretvornik epohe spletno mesto je morda najobsežnejši pretvornik časovnih žigov. Začne se s prikazom trenutnega časa Unixa-v realnem času-in poleg tega doda skoraj vse možne funkcije. Njegova glavna uporaba je pretvorba med časovnimi žigovi in ​​datumi, ki jih lahko bere človek, v obe smeri.

Dan's Tools je velika zbirka uporabnih spletnih aplikacij, od katerih je ena pretvornik časovnih žigov . Je bolj osnovni, vendar ima zelo čisto predstavitev in je enostaven za uporabo.

Čas je predstavlja še en, še bolj minimalističen videz. Prikazuje čas v številnih oblikah, vključno s časom Unix. V naslov svoje strani vključuje trenutni čas, kar je koristno.

Uporaba časa Unix z orodji ukazne vrstice

V sistemih Linux in macOS je datum program je osrednji pripomoček za obravnavo datuma/časa, vključno s časovnimi žigi Unixa. Klican brez argumentov, vrne trenutni datum/čas v berljivi obliki:

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

Če potrebujete trenutni datum/čas v času Unixa, uporabite +%s prepir:

$ date +%s
1612960114

Iz datuma, ki ga lahko bere človek, lahko pretvorite v časovni žig z uporabo -d zastavico, če je vaša različica datum podpira. Večina različic Linuxa mora privzeto:

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

V sistemu macOS, datum je drugačen program, ki zahteva drugačen nabor zastavic:

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

Če gremo v drugo smer, lahko pretvorimo iz časovnega žiga Unixa s pomočjo -r zastava:

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

Nekateri drugi programi uporabljajo %s format za obravnavo časa Unixa. Če želite na primer prikazati datum spremembe datoteke v času Unixa, z oznako Linux različica ls , lahko uporabite naslednje:

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

Kako uporabljati čas Unixa v programskih jezikih

PHP ima čas () funkcija, ki vrne trenutni časovni žig Unixa. Njegovo datum () funkcija vzame časovni žig kot svoj drugi argument:

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

JavaScript pristopa k stvarem na zanimiv način. Ima a Date.now () metoda, da dobite število milisekund od obdobja Unixa. Seveda lahko to delite s 1.000 in zaokrožite rezultat, da dobite enakovreden čas Unixa v sekundah:

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

Razumevanje časa Unixa

Unixov čas je preprost koncept, ki se pojavlja marsikje. Ko ga razumete, se vam bo morda zdel zelo koristen, na primer pri izračunu časovnih razlik. Prav tako lahko prepoznate, kdaj je to lahko vzrok za nekatere napake.

Koncepti, kot sta epoha in časovni žigi, so pomemben del začetka uporabe Linuxa. Če želite izvedeti več o osnovnih stvareh, kot so npr ls , si oglejte naš vodnik po osnovnih ukazih Linuxa.

Deliti Deliti Cvrkutati E-naslov 9 osnovnih ukazov za začetek uporabe Linuxa

Želite spoznati Linux? Začnite s temi osnovnimi ukazi Linuxa in se naučite standardnih računalniških nalog.

Preberite Naprej
Sorodne teme O avtorju Bobby Jack(58 objavljenih člankov)

Bobby je tehnološki navdušenec, ki je več kot dve desetletji delal kot razvijalec programske opreme. Navdušen je nad igranjem iger, dela kot urednik recenzij v reviji Switch Player in je potopljen v vse vidike spletnega založništva in spletnega razvoja.

Več od Bobbyja Jacka

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti