Co to jest czas uniksowy i kiedy była epoka uniksowa?

Co to jest czas uniksowy i kiedy była epoka uniksowa?

Dlaczego Unix ma własną koncepcję czasu? Jaka jest epoka i jaki jest problem Y2038?





Czas uniksowy to sposób reprezentowania określonej daty i godziny, używany przez Linux, macOS i wiele innych interoperacyjnych systemów. Jest tak rozpowszechniony, że prawdopodobnie używasz go, nie zdając sobie z tego sprawy. Kiedy jednak zrozumiesz czas uniksowy, zauważysz go w wielu kontekstach. Kilka narzędzi może pomóc w pracy z czasem uniksowym.





Jaki jest cel czasu uniksowego?

Czas uniksowy to całkowita liczba sekund od ustalonej godziny i daty. Jest to format daty/godziny (lub sygnatury czasowej), który wygląda inaczej niż daty i godziny czytelne dla człowieka, do których jesteśmy przyzwyczajeni. Dzieje się tak wyłącznie ze względu na wydajność. Przechowywanie pojedynczej liczby reprezentującej sekundy zajmuje znacznie mniej miejsca niż przechowywanie oddzielnych wartości dla roku, miesiąca, godziny itp.





Oczywiście, we współczesnych terminach, różnica w przestrzeni wcale nie jest aż tak duża. Ale weź pod uwagę, że Unix powstał pod koniec lat sześćdziesiątych, kiedy dostępna pamięć była znacznie mniejsza. Znacznie używane są również znaczniki czasu, więc ich pamięć się sumuje. Na przykład z każdym plikiem są powiązane trzy sygnatury czasowe.

Format jest prawie niemożliwy do przetłumaczenia w twojej głowie, chyba że jesteś matematycznym geniuszem. Ale nadal ma pewne zalety w porównaniu z bardziej czytelnymi alternatywami, takimi jak śro, 21 paź 2015 07:28:00 GMT . Możesz bardzo łatwo zamówić dwa uniksowe znaczniki czasu na pierwszy rzut oka. Zwykle szybciej jest też ustalić różnicę między dwoma znacznikami czasu. Dotyczy to w szczególności dat zbliżonych do siebie, takich jak sąsiednie dni.



O Epoce

Tak więc czas uniksowy to całkowita liczba sekund od określonego punktu w czasie. Ale jaki jest ten moment w czasie? Jego 00:00:00 UTC na 1 stycznia 1970 . Jest to często określane jako Epoka Uniksa. Programiści wybrali tę datę dla epoki z wygody, ponieważ była to najbliższa okrągła data, kiedy wymyślili czas uniksowy.

Być może widziałeś tę datę, kiedy coś poszło nie tak. To oczywiście błąd, ale taki, który wygląda bardzo dziwnie, gdy skutkuje datą sprzed czasu, gdy wielu z nas się urodziło! Jest to jednak całkowicie zrozumiałe, gdy znasz czas uniksowy. Jeśli jakikolwiek system próbuje wyświetlić znacznik czasu, który nie ma żadnej wartości, często przekłada się to na 0 i daje dokładną datę epoki.





dlaczego mój pasek zadań nie działa w systemie Windows 10?

Uniksowy format danych czasu

Ściśle mówiąc, nie ma takiego. Pierwotnym typem danych była 32-bitowa liczba całkowita i często tak jest, nawet w znacznie potężniejszych systemach.

Ten typ danych umożliwia przechowywanie przez wartość łącznie 2^32 sekund, czyli nieco ponad 136 lat. Ta wartość jest zwykle podpisana, co oznacza, że ​​może być ujemna lub dodatnia. Tak więc zwykle reprezentuje 68 lat po obu stronach epoki, tj. 1902-2038.





To oczywiście wciąż ograniczony okres. Ale głównym zastosowaniem formatu sygnatury czasowej były koncepcje, takie jak modyfikacja plików. Bardzo potrzebna była reprezentacja czasu bliskiego teraźniejszości, a nie starożytnej historii lub dalekiej przyszłości. Nawet w przypadku aplikacji takich jak kalendarze rzadko występuje potrzeba przedstawiania dat w przyszłości na więcej niż kilkadziesiąt lat.

Ale to nie znaczy, że ten ograniczony czas jest bezproblemowy…

Problem roku 2038

Błąd Y2K (jeden z najgorszych błędów programistycznych w historii) dotknął systemy komputerowe przechowujące lata jako wartości dwucyfrowe. Kiedy nadszedł rok 2000, takie systemy traktowały go tak, jakby był rok 1900. W rzeczywistości nie było to tak katastrofalne, jak się obawiano, głównie dlatego, że wiele osób poświęciło dużo czasu i wysiłku z góry, przygotowując się do tego.

Jeśli zwracałeś uwagę w poprzedniej sekcji, być może zauważyłeś podobny problem, który mógł wpływać na czas uniksowy. Cóż, czas uniksowy ma swój własny problem z danymi: problem Y2k38. (Często jest to określane jako problem, a nie błąd; być może od 2000 roku staliśmy się bardziej optymistyczni!) Kiedy czas uniksowy dosłownie skończy się w 2038 roku, systemy będą traktować nowe daty jako 1902 lub 1970. Po prostu całkowicie mi się nie uda.

Przynajmniej ten problem nie dotknie nas z wybiciem północy w sylwestra. Ostatnia sekunda 32-bitowego czasu Unix wypadnie 19 marca. Ewentualnie prawdopodobnie zaktualizujemy większość systemów do 2038 r. W przeciwnym razie i tak będą one do tego czasu przestarzałe.

Niektóre przydatne zasoby sygnatury czasowej

ten Konwerter Epoki witryna jest prawdopodobnie najbardziej wszechstronnym dostępnym konwerterem znaczników czasu. Rozpoczyna się od wyświetlenia aktualnego czasu uniksowego — w czasie rzeczywistym — i dodaje do tego prawie każdą możliwą do wyobrażenia funkcję. Jego głównym zastosowaniem jest konwersja między znacznikami czasu a datami czytelnymi dla człowieka w obu kierunkach.

Narzędzia Dana to ogromna kolekcja przydatnych aplikacji internetowych, z których jedna to konwerter znaczników czasu . Jest bardziej podstawowy, ale ma bardzo przejrzystą prezentację i jest łatwy w użyciu.

Czas jest prezentuje kolejny, jeszcze bardziej minimalistyczny wygląd. Pokazuje czas w wielu formatach, w tym czas uniksowy. Zawiera aktualny czas w tytule strony, co jest przydatne.

Używanie czasu uniksowego z narzędziami wiersza poleceń

W systemach Linux i macOS Data program jest podstawowym narzędziem do radzenia sobie z datą/czasem, w tym uniksowymi znacznikami czasu. Wywoływana bez żadnych argumentów, zwraca bieżącą datę/godzinę w formacie czytelnym dla człowieka:

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

Jeśli potrzebujesz bieżącej daty/godziny w czasie uniksowym, użyj +%s argument:

$ date +%s
1612960114

Możesz przekonwertować datę czytelną dla człowieka na znacznik czasu za pomocą -D oflaguj, jeśli twoja wersja Data wspiera to. Większość wersji Linuksa powinna domyślnie:

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

W systemie macOS, Data to inny program, który wymaga innego zestawu flag:

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

Idąc w innym kierunku, możesz przekonwertować ze znacznika czasu uniksowego za pomocą -r flaga:

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

Niektóre inne programy używają %s format do radzenia sobie z czasem uniksowym. Na przykład, jeśli chcesz pokazać datę modyfikacji pliku w czasie uniksowym, z Wersja dla systemu Linux ls , możesz użyć:

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

Jak korzystać z czasu uniksowego w językach programowania?

PHP ma czas() funkcja, która zwraca aktualny uniksowy znacznik czasu. Jego Data() funkcja przyjmuje znacznik czasu jako drugi argument:

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

JavaScript podchodzi do rzeczy w ciekawy sposób. To ma Data.teraz () metoda, aby uzyskać liczbę milisekund od epoki Uniksa. Oczywiście możesz podzielić to przez 1000 i zaokrąglić wynik, aby otrzymać równoważny czas uniksowy w sekundach:

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

Zrozumienie czasu uniksowego

Czas uniksowy to prosta koncepcja, która pojawia się w wielu miejscach. Kiedy już to zrozumiesz, może ci się to przydać, na przykład przy obliczaniu różnic czasowych. Możesz także rozpoznać, kiedy może to być przyczyną pewnych błędów.

Pojęcia, takie jak epoka i znaczniki czasu, są ważną częścią rozpoczynania pracy z Linuksem. Aby dowiedzieć się więcej o podstawowych sprawach, takich jak ls , zapoznaj się z naszym przewodnikiem po podstawowych poleceniach systemu Linux.

Udział Udział Ćwierkać E-mail 9 podstawowych poleceń ułatwiających rozpoczęcie pracy z Linuksem

Chcesz poznać Linuksa? Zacznij od tych podstawowych poleceń systemu Linux, aby nauczyć się standardowych zadań obliczeniowych.

Czytaj dalej
Powiązane tematy O autorze Bobby Jack(58 opublikowanych artykułów)

Bobby jest entuzjastą technologii, który przez prawie dwie dekady pracował jako programista. Pasjonuje się grami, pracuje jako redaktor recenzji w magazynie Switch Player i jest zanurzony we wszystkich aspektach publikowania online i tworzenia stron internetowych.

Więcej od Bobby'ego Jacka

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować