Ano ang Oras ng Unix at Kailan ang Unix Epoch?

Ano ang Oras ng Unix at Kailan ang Unix Epoch?

Bakit may sariling konsepto ng oras ang Unix? Ano ang panahon at ano ang problema sa Y2038?





Ang oras ng Unix ay isang paraan ng kumakatawan sa isang tukoy na petsa at oras, na ginagamit ng Linux, macOS, at maraming iba pang mga magkakaugnay na system. Napakalat nito, na marahil ay ginagamit mo ito nang hindi mo namamalayan. Gayunpaman, kapag naintindihan mo ang oras ng Unix, makikita mo ito sa maraming mga konteksto. Maraming mga tool ang makakatulong sa iyo upang gumana sa oras ng Unix.





Ano ang Pakay ng Oras ng Unix?

Ang oras ng Unix ay isang bilang ng kabuuang mga segundo mula pa sa isang takdang oras at petsa. Ito ay isang format ng petsa / oras (o timestamp) na mukhang naiiba mula sa mga petsa at oras na nababasa ng tao na nakasanayan namin. Puro ito para sa mga kadahilanang kahusayan. Tumatagal ng mas kaunting puwang upang maiimbak ang isang solong numero na kumakatawan sa mga segundo kaysa sa pag-iimbak ng magkakahiwalay na halaga para sa taon, buwan, oras, atbp.





Siyempre, sa mga modernong termino, ang pagkakaiba-iba ng puwang ay hindi gaanong lahat. Ngunit isaalang-alang na ang Unix ay nagmula noong huling bahagi ng 1960 kapag ang magagamit na imbakan ay mas maliit. Maraming ginagamit din ang mga timestamp, kaya't nagdaragdag ang kanilang imbakan. Halimbawa, ang bawat file ay may tatlong mga timestamp na nauugnay dito.

Ang format ay halos imposibleng isalin sa iyong ulo maliban kung ikaw ay isang henyo sa matematika. Ngunit mayroon pa ring ilang mga pakinabang sa higit na nababasa na mga kahalili tulad ng Wed, 21 Okt 2015 07:28:00 GMT . Maaari kang mag-order ng dalawang mga timestamp ng Unix nang napakadali, sa isang sulyap. Kadalasan din mas mabilis na mag-ehersisyo ang pagkakaiba sa pagitan ng dalawang mga timestamp. Partikular na totoo ito para sa mga petsa na malapit na magkasama, tulad ng sa mga katabing araw.



Tungkol sa Epoch

Kaya, ang oras ng Unix ay isang kabuuang bilang ng mga segundo mula pa sa isang tukoy na punto sa oras. Ngunit ano ang puntong iyon sa oras? Ito ay 00:00:00 UTC sa Ika-1 ng Enero 1970 . Ito ay madalas na tinukoy bilang Unix Epoch. Pinili ng mga programmer ang petsang ito para sa panahon nang walang kaginhawaan dahil ito ang pinakamalapit na petsa ng pag-ikot noong naimbento nila ang oras ng Unix.

Maaaring nakita mo ang petsang ito kapag may nangyari. Ito ay malinaw na isang bug, ngunit ang isa na mukhang kakaiba kapag nagreresulta ito sa isang petsa bago ang oras na marami sa atin ang ipinanganak! Gayunpaman, ganap itong naiintindihan kapag alam mo ang tungkol sa oras ng Unix. Kung may anumang system na sumusubok na magpakita ng isang timestamp na walang anumang halaga, madalas itong isasalin sa 0 at magreresulta sa eksaktong petsa ng panahon.





kung paano suriin kung ang aking hard drive ay hindi pagtupad

Ang Format ng Data ng Oras ng Unix

Mahigpit na pagsasalita, walang isa. Ang orihinal na uri ng data ay isang 32-bit integer, at madalas itong nananatili sa kaso, kahit na sa mas malakas na mga system.

Pinapayagan ng uri ng data na ito ang halaga upang mag-imbak ng kabuuang 2 ^ 32 segundo, na higit sa 136 taon. Karaniwang nilalagdaan ang halagang ito, nangangahulugang maaari itong maging negatibo o positibo. Kaya, karaniwang kumakatawan ito sa 68 na taon sa magkabilang panig ng panahon ibig sabihin 1902-2038.





Ito ay isang limitadong panahon pa rin, syempre. Ngunit ang pangunahing paggamit ng format ng timestamp ay para sa mga konsepto tulad ng pagbabago ng file. Ang pangangailangan ay labis na kumakatawan sa oras na malapit sa kasalukuyan, kaysa sa sinaunang kasaysayan o malayo sa hinaharap. Kahit na para sa mga application tulad ng mga kalendaryo, bihirang kailanganin na kumatawan sa mga petsa nang higit sa ilang mga dekada sa hinaharap.

Ngunit hindi ito nangangahulugang ang limitadong tagal ng panahon na ito ay walang mga problema ...

Ang Problema sa Taong 2038

Ang Y2K Bug (isa sa mga pinakapangit na pagkakamali sa pagprograma sa kasaysayan) ay nakaapekto sa mga system ng computer na nakaimbak ng mga taon bilang dalawang-digit na halaga. Nang dumating ang taong 2000, tinatrato ito ng mga naturang sistema na parang noong 1900. Sa kaganapan, hindi ito sakuna tulad ng kinatakutan, pangunahin dahil maraming mga tao ang gumugol ng maraming oras at pagsisikap nang maaga, naghahanda para dito.

Kung nagbibigay ka ng pansin sa nakaraang seksyon, maaaring may nakita kang katulad na problema na maaaring makaapekto sa oras ng Unix. Sa gayon, ang oras ng Unix ay mayroong sariling problema sa data: ang problema sa Y2k38. (Madalas itong tinukoy bilang isang problema, hindi isang bug; marahil ay naging mas may pag-asa kami mula pa noong taong 2000!) Kapag ang oras ng Unix ay literal na naubos noong 2038, gagamot ng mga system ang mga bagong petsa alinman sa 1902 o 1970. O posibleng sila ay ' mabibigo lang ako lahat.

Hindi bababa sa problemang ito ay hindi maaabot sa amin sa stroke ng hatinggabi sa Bisperas ng Bagong Taon. Ang huling segundo ng 32-bit na oras ng Unix ay babagsak sa ika-19 ng Marso. Sa paglaon, malamang na mag-a-upgrade kami ng karamihan sa mga system sa 2038 o mawawala na ang mga ito sa gayon pa man.

Ilang Kapaki-pakinabang na Mapagkukunang Timestamp

Ang Epoch Converter Ang site ay posibleng ang pinaka-komprehensibong timestamp converter na magagamit. Nagsisimula ito sa pamamagitan ng pagpapakita ng kasalukuyang oras ng Unix — sa real-time — at nagdaragdag ng halos bawat naiisip na tampok sa tuktok niyon. Ang pangunahing paggamit nito ay para sa pag-convert sa pagitan ng mga timestamp at mga petsa na nababasa ng tao, sa parehong direksyon.

Ang Dan's Tools ay isang malaking koleksyon ng mga kapaki-pakinabang na web app, isa na rito ay converter ng timestamp . Mas batayan ito, ngunit may napakalinis na pagtatanghal at madaling gamitin.

Ang oras ay nagtatanghal ng isa pang, kahit na mas minimalistic na hitsura. Nagpapakita ito ng oras sa isang bilang ng mga format, kabilang ang oras ng Unix. Nagsasama ito ng kasalukuyang oras sa pamagat ng pahina nito na kapaki-pakinabang.

Paggamit ng Oras ng Unix Sa Mga Tool ng Command Line

Sa Linux at macOS, ang petsa Ang programa ay ang pangunahing utility para sa pagharap sa petsa / oras, kabilang ang mga timestamp ng Unix. Tinawag nang walang anumang mga argumento, ibinabalik nito ang kasalukuyang petsa / oras sa isang nababasa na format ng tao:

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

Kung kailangan mo ng kasalukuyang petsa / oras sa oras ng Unix, gamitin ang +% s argumento:

$ date +%s
1612960114

Maaari kang mag-convert mula sa isang nababasa na petsa ng tao sa isang timestamp gamit ang -d flag kung ang iyong bersyon ng petsa sinusuportahan ito Karamihan sa mga bersyon ng Linux ay dapat, bilang default:

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

Sa macOS, petsa ay isang magkaibang programa, na nangangailangan ng ibang hanay ng mga watawat:

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

Pagpunta sa iba pang direksyon, maaari kang mag-convert mula sa isang timstamp ng Unix gamit ang -r bandila:

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

Ang ilang iba pang mga programa ay gumagamit ng % s format upang makitungo sa oras ng Unix. Halimbawa, kung nais mong ipakita ang petsa ng pagbabago ng isang file sa oras ng Unix, kasama ang Bersyon ng Linux ng ls , maaari mong gamitin ang sumusunod:

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

Paano Gumamit ng Oras ng Unix sa Mga Wika sa Programming

Ang PHP ay mayroong oras () pagpapaandar na nagbabalik sa kasalukuyang timestamp ng Unix. Ito ay petsa () Ang pagpapaandar ay tumatagal ng isang timestamp bilang pangalawang argumento:

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

Lumalapit ang JavaScript sa mga bagay sa isang nakawiwiling paraan. Mayroon itong Petsa.ngayon () pamamaraan upang makuha ang bilang ng mga milliseconds mula noong panahon ng Unix. Siyempre, maaari mo itong hatiin sa pamamagitan ng 1,000 at bilugan ang resulta upang mabigyan ang katumbas na oras ng Unix sa mga segundo:

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

Pag-unawa sa Oras ng Unix

Ang oras ng Unix ay isang simpleng konsepto na lumalaki sa maraming lugar. Kapag naintindihan mo ito, maaari mong makita itong kapaki-pakinabang, kapag kinakalkula ang mga pagkakaiba sa oras, halimbawa. Maaari mo ring makilala kung maaaring ito ang sanhi ng ilang mga bug.

Ang mga konsepto tulad ng kapanahunan at mga timestamp ay isang mahalagang bahagi ng pagsisimula sa Linux. Upang malaman ang higit pa tungkol sa mahahalagang bagay tulad ng ls , suriin ang aming gabay sa pangunahing mga utos ng Linux.

Magbahagi Magbahagi Mag-tweet Email 9 Pangunahing Mga Utos upang Magsimula Ka Sa Linux

Nais mong makakuha ng pamilyar sa Linux? Magsimula sa mga pangunahing utos ng Linux na malaman ang karaniwang mga gawain sa computing.

Basahin Susunod
Mga Kaugnay na Paksa Tungkol sa May-akda Bobby Jack(58 Mga Artikulo Na-publish)

Si Bobby ay isang mahilig sa teknolohiya na nagtrabaho bilang isang developer ng software sa loob ng halos dalawang dekada. Masigasig siya sa paglalaro, nagtatrabaho bilang Review Editor sa Switch Player Magazine, at nahuhulog sa lahat ng aspeto ng online na pag-publish at pag-unlad sa web.

Higit pa Mula kay Bobby Jack

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe