Mis on Unixi aeg ja millal oli Unixi ajastu?

Mis on Unixi aeg ja millal oli Unixi ajastu?

Miks on Unixil oma ajakontseptsioon? Mis on ajastu ja mis on Y2038 probleem?





Unixi aeg on konkreetse kuupäeva ja kellaaja esitamise vahend, mida kasutavad Linux, macOS ja paljud teised koostalitlusvõimelised süsteemid. See on nii laialt levinud, et kasutate seda ilmselt teadmata. Kui olete Unixi ajast aru saanud, märkate seda aga paljudes kontekstides. Mitmed tööriistad aitavad teil Unixi ajaga töötada.





Mis on Unixi aja eesmärk?

Unixi aeg on fikseeritud kellaajast ja kuupäevast möödunud sekundite koguarv. See on kuupäeva/kellaaja (või ajatempli) vorming, mis erineb meile loetavatest kuupäevadest ja kellaaegadest, millega oleme harjunud. Seda puhtalt tõhususe huvides. Ühe sekundi numbri salvestamiseks kulub palju vähem ruumi kui aasta, kuu, tunni jne väärtuste eraldi salvestamiseks.





Loomulikult pole tänapäeva mõistes ruumi erinevus üldse nii suur. Kuid arvestage, et Unix sai alguse 1960ndate lõpus, kui saadaolev salvestusruum oli palju väiksem. Samuti kasutatakse palju ajatemplid, nii et nende salvestusruum lisandub. Näiteks on iga failiga seotud kolm ajatemplit.

Vormingut on pea võimatu oma peas tõlkida, kui te pole matemaatiline geenius. Kuid sellel on siiski mõningaid eeliseid loetavamate alternatiivide, näiteks Kolmapäev, 21. oktoober 2015 07:28:00 GMT . Saate tellida kaks Unixi ajatemplit väga lihtsalt, lühidalt. Tavaliselt on ka kahe ajatempli erinevuse väljaselgitamine kiirem. See kehtib eriti lähedaste kuupäevade kohta, näiteks külgnevatel päevadel.



Epohhi kohta

Niisiis, Unixi aeg on sekundite koguarv konkreetsest ajahetkest. Aga mis see ajahetk on? On küll 00:00:00 UTC peal 1. jaanuar 1970 . Seda nimetatakse sageli Unixi ajastuks. Programmeerijad valisid selle ajastu kuupäeva mugavuse huvides, kuna see oli Unixi aja leiutamisel lähim ümmargune kuupäev.

Võib -olla olete seda kuupäeva näinud, kui midagi on valesti läinud. See on ilmselgelt viga, kuid tundub väga kummaline, kui selle tulemuseks on kuupäev, mis pärineb ajast, mil paljud meist sündisid! See on aga täiesti arusaadav, kui teate Unixi ajast. Kui mõni süsteem üritab kuvada ajatempli, millel pole väärtust, tõlgitakse see sageli nulliks ja selle tulemuseks on täpne ajajärgu kuupäev.





kuidas eemaldada midagi Netflixi vaatamise jätkamisest

Unixi ajaandmete vorming

Rangelt võttes pole ühtegi. Algne andmetüüp oli 32-bitine täisarv ja see jääb sageli paika isegi palju võimsamates süsteemides.

See andmetüüp võimaldab väärtusele salvestada kokku 2^32 sekundit, mis on veidi üle 136 aasta. See väärtus on tavaliselt allkirjastatud, mis tähendab, et see võib olla negatiivne või positiivne. Seega tähistab see tavaliselt 68 aastat mõlemal pool ajastut, st 1902–2038.





See on muidugi piiratud periood. Kuid ajatempli vormingu esmane kasutamine oli selliste mõistete jaoks nagu failide muutmine. Vajadus oli väga kujutada aega oleviku lähedal, mitte iidset ajalugu või kauget tulevikku. Isegi selliste rakenduste puhul nagu kalendrid on harva vaja kujutada kuupäevi, mis on kauem kui mõnikümmend aastat tulevikus.

Kuid see ei tähenda, et see piiratud ajavahemik oleks ilma probleemideta ...

Aasta 2038 probleem

Y2K Bug (üks ajaloo halvimaid programmeerimisvigu) mõjutas arvutisüsteeme, mis salvestasid aastaid kahekohaliste väärtustena. Kui 2000. aasta saabus, käsitlesid sellised süsteemid seda justkui 1900. Sel juhul ei olnud see nii katastroofiline, kui kardeti, peamiselt seetõttu, et paljud inimesed kulutasid selleks ettevalmistamiseks palju aega ja vaeva.

Kui pöörasite eelmises jaotises tähelepanu, võisite märgata sarnast probleemi, mis võib mõjutada Unixi aega. Noh, Unixi ajal on oma andmeprobleem: Y2k38 probleem. (Seda nimetatakse sageli probleemiks, mitte veaks; võib -olla oleme alates 2000. aastast optimistlikumaks muutunud!) Kui Unixi aeg 2038. aastal sõna otseses mõttes otsa saab, käsitlevad süsteemid uusi kuupäevi kas 1902 või 1970. Või siis Lihtsalt ebaõnnestub üldse.

Vähemalt see probleem ei taba meid aastavahetuse südaööl. 32-bitise Unixi aja viimane sekund langeb 19. märtsile. Võimaluse korral uuendame tõenäoliselt enamikku süsteeme aastaks 2038 või on need selleks ajaks juba vananenud.

Mõned kasulikud ajatemplite ressursid

The Epoch Converter sait on tõenäoliselt kõige põhjalikum saadaolev ajatemplite muundur. See algab reaalajas Unixi aja kuvamisega ja lisab sellele peaaegu kõik kujuteldavad funktsioonid. Selle peamine kasutusala on ajatemplite ja inimesele loetavate kuupäevade vahetamine mõlemas suunas.

Dan's Tools on tohutu kogum kasulikke veebirakendusi, millest üks on a ajatempli muundur . See on lihtsam, kuid sellel on väga puhas esitlus ja seda on lihtne kasutada.

Aeg on esitab teise, veelgi minimalistlikuma ilme. See näitab aega mitmes vormingus, sealhulgas Unixi aeg. See sisaldab lehe pealkirjas praegust aega, mis on kasulik.

Unixi aja kasutamine käsurea tööriistadega

Linuxis ja macOS -is kuupäev programm on põhiline utiliit kuupäeva/kellaajaga tegelemiseks, sealhulgas Unixi ajatemplid. Ilma argumentideta helistades tagastab see praeguse kuupäeva/kellaaja inimloetavas vormingus:

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

Kui vajate praegust kuupäeva/kellaaega Unixi ajal, kasutage +%s argument:

$ date +%s
1612960114

Inimloetavast kuupäevast saate ajatempli teisendada, kasutades -d märkige, kui teie versioon on kuupäev toetab seda. Enamik Linuxi versioone peaks vaikimisi:

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

MacOS -is kuupäev on erinev programm, mis nõuab erinevat lipukomplekti:

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

Teises suunas liikudes saate teisendada Unixi ajatemplist, kasutades -r lipp:

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

Mõned teised programmid kasutavad %s vormingus Unixi ajaga tegelemiseks. Näiteks kui soovite faili muutmise kuupäeva kuvada Unixi aja järgi, vajutage Linuxi versioon ls , saate kasutada järgmist.

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

Kuidas kasutada Unixi aega programmeerimiskeeltes

PHP -l on aeg () funktsioon, mis tagastab praeguse Unixi ajatempli. Tema kuupäev () funktsioon võtab teise argumendina ajatempli:

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

JavaScript läheneb asjadele huvitaval viisil. Sellel on Date.now () meetod millisekundite arvu saamiseks alates Unixi ajastust. Loomulikult võite selle jagada 1000 -ga ja ümardada tulemus, et saada samaväärne Unixi aeg sekundites:

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

Unixi aja mõistmine

Unixi aeg on lihtne mõiste, mis tekib paljudes kohtades. Kui olete sellest aru saanud, võib see olla üsna kasulik näiteks ajavahede arvutamisel. Samuti saate aru, millal see võib olla teatud vigade põhjus.

Sellised mõisted nagu ajastu ja ajatemplid on oluline osa Linuxiga alustamisel. Lisateabe saamiseks selliste oluliste asjade kohta nagu ls , vaadake meie Linuxi põhikäskude juhendit.

Jaga Jaga Piiksuma E -post 9 põhikäsklust Linuxiga alustamiseks

Kas soovite Linuxiga tuttavaks saada? Alustage nende põhiliste Linuxi käskudega, et õppida standardseid andmetöötlusülesandeid.

Loe edasi
Seotud teemad Autori kohta Bobby Jack(58 artiklit avaldatud)

Bobby on tehnoloogiahuviline, kes töötas enam kui kaks aastakümmet tarkvaraarendajana. Ta on kirglik mängude vastu, töötab ajakirja Switch Player ülevaadete toimetajana ning on süvenenud kõikidesse veebipõhiste avaldamise ja veebiarenduse aspektidesse.

Veel Bobby Jackilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin