Unix'in neden kendi zaman kavramı var? Dönem nedir ve Y2038 sorunu nedir?

Unix zamanı, Linux, macOS ve diğer birçok birlikte çalışabilir sistem tarafından kullanılan belirli bir tarih ve saati temsil etmenin bir yoludur. O kadar yaygın ki muhtemelen farkında olmadan kullanıyorsunuz. Unix zamanını anladıktan sonra, birçok bağlamda fark edeceksiniz. Unix zamanla çalışmanıza yardımcı olabilecek çeşitli araçlar.

Unix Time'ın Amacı Nedir?

Unix zamanı, sabit bir tarih ve saatten bu yana geçen toplam saniye sayısıdır. Bu, alıştığımız tarih ve saatlerden farklı görünen bir tarih / saat (veya zaman damgası) biçimidir. Bu tamamen verimlilik nedenlerinden dolayıdır. Saniyeleri temsil eden tek bir sayıyı depolamak, yıl, ay, saat vb. İçin ayrı değerler depolamaktan çok daha az yer kaplar.

Elbette modern anlamda, alan farkı o kadar da fazla değil. Ancak Unix'in 1960'ların sonlarında, kullanılabilir depolamanın çok daha küçük olduğu zamanlarda ortaya çıktığını düşünün. Zaman damgaları da çok kullanılır, bu nedenle depolama alanları artar. Örneğin, her dosyanın kendisiyle ilişkilendirilmiş üç zaman damgası vardır.

instagram viewer

Bir matematik dehası değilseniz, formatı kafanızda tercüme etmek neredeyse imkansızdır. Ancak, daha okunabilir alternatiflere göre hala bazı avantajları vardır. 21 Ekim 2015, Çar 07:28:00 GMT. Bir bakışta çok kolay bir şekilde iki Unix zaman damgası sipariş edebilirsiniz. Ayrıca, iki zaman damgası arasındaki farkı bulmak genellikle daha hızlıdır. Bu, özellikle bitişik günler gibi birbirine yakın tarihler için geçerlidir.

Epoch Hakkında

Dolayısıyla, Unix zamanı, belirli bir zamandan bu yana geçen toplam saniye sayısıdır. Ama zamanın o noktası nedir? Onun 00:00:00 UTC açık 1 Ocak 1970. Bu genellikle Unix Epoch olarak anılır. Programcılar, Unix zamanını icat ettiklerinde en yakın yuvarlak tarih olduğu için bu tarihi, kolaylık olmadığı için seçtiler.

Bir şeyler ters gittiğinde bu tarihi çok iyi görmüşsünüzdür. Açıkça bir hata, ancak çoğumuzun doğduğu zamandan önceki bir tarihle sonuçlandığında çok tuhaf görünen bir hata! Yine de Unix zamanını bildiğiniz zaman bu tamamen anlaşılabilir bir durumdur. Herhangi bir sistem, herhangi bir değeri olmayan bir zaman damgası görüntülemeye çalışıyorsa, genellikle 0'a çevrilir ve tam dönem tarihi ile sonuçlanır.

Unix Zaman Veri Formatı

Açıkçası, bir tane yok. Orijinal veri türü 32 bitlik bir tamsayıdır ve bu, çok daha güçlü sistemlerde bile çoğu zaman geçerli kalır.

Bu veri türü, değerin toplam 2 ^ 32 saniye depolamasına izin verir, bu da 136 yıldan biraz fazladır. Bu değer tipik olarak işaretlidir, yani negatif veya pozitif olabilir. Bu nedenle, genellikle çağın her iki tarafında, yani 1902-2038'de 68 yılı temsil eder.

Elbette bu hala sınırlı bir dönem. Ancak zaman damgası biçiminin birincil kullanımı, dosya değişikliği gibi kavramlar içindi. İhtiyaç, zamanı kadim tarihin veya uzak geleceğin değil, bugüne yakın bir yerde temsil etme ihtiyacıydı. Takvimler gibi uygulamalar için bile, birkaç on yıldan daha sonraki tarihlerin temsil edilmesine nadiren ihtiyaç duyulur.

Ancak bu, bu sınırlı sürenin sorunsuz olduğu anlamına gelmez...

2038 Yılı Sorunu

Y2K Hatası (tarihteki en kötü programlama hatalarından biri) yılları iki basamaklı değerler olarak depolayan bilgisayar sistemlerini etkiledi. 2000 yılı geldiğinde, bu tür sistemler ona 1900'müş gibi davrandı. Aslında, bu korkulduğu kadar felaket değildi, çünkü birçok insan önceden buna hazırlanmak için çok zaman ve çaba harcadı.

Tarihteki En Kötü 10 Programlama Hatası

Hikayeli geçmişinde, kodlama yıkımı da şekillendirdi. Küçük bir kötü kodun örnekleri büyük ölçüde felakete neden oldu. Aşağıda tarihin en kötü 10 programlama hatası yer almaktadır.

Önceki bölümde dikkat ettiyseniz, Unix zamanını etkileyebilecek benzer bir sorun görmüş olabilirsiniz. Unix zamanının kendi başına bir veri problemi var: Y2k38 problemi. (Bu genellikle bir hata olarak değil, bir sorun olarak adlandırılır; belki 2000 yılından beri daha iyimser hale geldik!) 2038'de Unix zamanı tam anlamıyla bittiğinde, sistemler yeni tarihleri ​​ya 1902 ya da 1970 olarak ele alacak. Ya da muhtemelen tamamen başarısız olurlar.

En azından bu sorun, yılbaşı gecesi gece yarısı bizi vurmayacak. 32 bit Unix zamanının son saniyesi 19 Mart'ta düşecek. Muhtemelen, çoğu sistemi 2038'e kadar yükselteceğiz, aksi takdirde o zamana kadar eski olacaklar.

Bazı Faydalı Zaman Damgası Kaynakları

Epoch Dönüştürücü site muhtemelen mevcut en kapsamlı zaman damgası dönüştürücüsüdür. Geçerli Unix zamanını gerçek zamanlı olarak göstererek başlar ve hemen hemen akla gelebilecek her özelliği bunun üzerine ekler. Ana kullanımı, her iki yönde de zaman damgaları ve insan tarafından okunabilir tarihler arasında dönüştürme yapmaktır.

Dan's Tools, kullanışlı web uygulamalarının büyük bir koleksiyonudur ve bunlardan biri zaman damgası dönüştürücü. Daha basittir, ancak çok temiz bir sunuma sahiptir ve kullanımı kolaydır.

Zaman daha minimalist bir görünüm sunar. Zamanı, Unix zamanı da dahil olmak üzere bir dizi formatta gösterir. Kullanışlı olan sayfa başlığında o anki zamanı içerir.

Linux ve macOS'ta, tarih program, Unix zaman damgaları da dahil olmak üzere tarih / saatle uğraşan temel yardımcı programdır. Herhangi bir bağımsız değişken olmadan çağrıldığında, geçerli tarih / saati insan tarafından okunabilir bir biçimde döndürür:

$ tarih
10 Şubat Çar 12:28:30 GMT 2021

Unix saatinde geçerli tarih / saate ihtiyacınız varsa, +% s argüman:

$ tarih +% s
1612960114

Kullanarak okunabilir bir tarihten zaman damgasına dönüştürebilirsiniz. -d sürümünüz varsa işaretleyin tarih bunu destekliyor. Çoğu Linux sürümü varsayılan olarak şunları yapmalıdır:

$ tarih -d "2 Ocak 1970" +% s
82800

MacOS'ta, tarih farklı bir işaret kümesi gerektiren farklı bir programdır:

$ tarih -j -f "% b% d% Y% T" "02 Ocak 1970 00:00:00" "+% s"
82800

Diğer yönde gidersek, bir Unix zaman damgasından şunu kullanarak dönüştürebilirsiniz: -r bayrak:

$ tarih -r 1600000000
Paz 13 Eylül 2020 13:26:40 BST

Diğer bazı programlar, % s Unix zamanı ile başa çıkmak için format. Örneğin, bir dosyanın değiştirilme tarihini Unix saatinde göstermek istiyorsanız, Linux sürümü ls, aşağıdakileri kullanabilirsiniz:

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

Programlama Dillerinde Unix Zamanı Nasıl Kullanılır

PHP'nin zaman() Geçerli Unix zaman damgasını döndüren işlev. Onun tarih () işlev, ikinci bağımsız değişkeni olarak bir zaman damgası alır:

$ php -r 'echo tarihi ("Y-a-g", zaman ());'
2021-02-11

JavaScript olaylara ilginç bir şekilde yaklaşır. Bir Date.now () Unix döneminden bu yana geçen milisaniye sayısını elde etmek için yöntem. Elbette, bunu 1.000'e bölebilir ve sonucu, eşdeğer Unix süresini saniye cinsinden vermek için yuvarlayabilirsiniz:

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

Unix Zamanını Anlamak

Unix zamanı, birçok yerde ortaya çıkan basit bir kavramdır. Bir kez anladığınızda, örneğin zaman farklarını hesaplarken oldukça yararlı bulabilirsiniz. Ayrıca, belirli hataların nedeninin ne zaman olabileceğini de anlayabilirsiniz.

Dönem ve zaman damgaları gibi kavramlar, Linux'a başlamanın önemli bir parçasıdır. Aşağıdakiler gibi temel konular hakkında daha fazla bilgi edinmek için ls, temel Linux komutları kılavuzumuza bakın.

E-posta adresi
Linux ile Başlamanıza Yardımcı Olacak 9 Temel Komut

Linux ile aşinalık kazanmak ister misiniz? Standart bilgi işlem görevlerini öğrenmek için bu temel Linux komutlarıyla başlayın.

İlgili konular
  • Belirtilmemiş
Yazar hakkında
Bobby Jack (27 Makale Yayınlandı)

Bobby, yirmi yılın büyük bir bölümünde yazılım geliştirici olarak çalışan bir teknoloji meraklısıdır. Switch Player Magazine'de İnceleme Editörü olarak çalışarak oyun oynama konusunda tutkulu ve çevrimiçi yayıncılık ve web geliştirmenin tüm yönlerine dalmış durumda.

Bobby Jack'dan Daha Fazla

Haber bültenimize abone ol

Teknoloji ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için haber bültenimize katılın!

Bir adım daha…!

Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.

.