Łatwy sposób na uzyskanie międzynarodowego czasu atomowego na Linuksie?

12

Mój system używa UTC jako zegara systemowego, którego nie mam ochoty zmieniać. Czy istnieje prosty sposób na uzyskanie bieżącego czasu TAI? (najlepiej narzędzie wiersza poleceń lub flaga)

JanKanis
źródło
2
Czy chcesz uzyskać różnicę między UTC i TAI w celach informacyjnych (np. Jest 12:30:13 UTC i 12:30:45 TAI), czy też chcesz zresetować zegar z zewnętrznego źródła, aby uzupełnić skumulowane różnice w twój system lokalny?
Sven
1
W tej chwili tylko w celach informacyjnych. I na wypadek, gdyby kiedykolwiek chciałem go użyć do programowania, ponieważ TAI, w przeciwieństwie do UTC, zawsze monotonicznie rośnie
JanKanis,

Odpowiedzi:

9

Trwają prace nad zapewnieniem natywnego wsparcia dla TAI dla Linuksa. Do tego czasu można użyć schematu-zegara do konwersji na TAI.

David Schwartz
źródło
Hmm, więc obecnie nie ma łatwego wsparcia, ale nadchodzi wsparcie jądra, a następnie musimy tylko poczekać, aż narzędzia użytkownika będą obsługiwać opcję CLOCK_TAI.
JanKanis,
2

Odpowiedź ze strefą czasową „prawo /” jest niepoprawna. Ma on na celu konwersję z zegara systemowego przechowywanego w TAI - 10s na UTC. W związku z tym poniżej podano prawidłowy czas w UTC, GPS, LOREN i TAI [1]:

#!/bin/sh
echo -n "UTC:   "; TZ='UTC' date
echo -n "GPS:   "; TZ='UTC' date --date='TZ="../leaps/UTC" now -9 seconds'
echo -n "LORAN: "; TZ='UTC' date --date='TZ="../leaps/UTC" now'
echo -n "TAI:   "; TZ='UTC' date --date='TZ="../leaps/UTC" now 10 seconds'

Właściwe strefy czasowe mogą znajdować się w innym miejscu, TZ = „prawo / UTC”, TZ = „../ zoneinfo-leaps / UTC”. Zamień „teraz” na datę / godzinę, którą chcesz przekształcić - dane wyjściowe są poprawne dla każdej daty po 1/1/1980.

Wynik:

UTC:   Sun Oct 30 16:28:30 UTC 2016
GPS:   Sun Oct 30 16:28:47 UTC 2016
LORAN: Sun Oct 30 16:28:56 UTC 2016
TAI:   Sun Oct 30 16:29:06 UTC 2016

[1] http://www.leapsecond.com/java/gpsclock.htm

kok
źródło
Rzeczywiście masz rację co do mojej odpowiedzi. Jak widać na skopiowanym przykładzie, w 2013 roku działał. Jednak dzisiaj w 2017 roku mam 10 sekundową różnicę między TAI a TZ='right/UTC' datedrukowaniem.
Huygens,
UWAGA: UTC jest dostosowywany w odniesieniu do GPS i TAI, gdy aktualizowane są sekundy przestępne. TAI (Temps Atomique International, to międzynarodowa atomowa skala czasu oparta na ciągłym zliczaniu sekundy SI). W 2019 roku TAI wyprzedza UTC o 37 sekund. TAI zawsze wyprzedza GPS o 19 sekund. Każdy system korzystający z tego musi zostać zaktualizowany, aby zapewnić aktualność „../leaps/UTC”.
KevinM,
1

Odpowiedź jest przestarzała : patrz /server//a/812163/67419

Możesz użyć strefy czasowej „prawo /”, aby wyświetlić przybliżenie (<1s) TAI.

Musisz jednak upewnić się, że Twój pakiet strefy czasowej jest aktualny (np. Tzdata na Ubuntu).

Kod:

TZ='right/UTC' date

Przykład:

$ date -u ; TZ='right/UTC' date
Mon Sep 16 13:36:21 UTC 2013
Mon Sep 16 13:35:56 UTC 2013

Powód amortyzacji: między 2013 r. A dniem dzisiejszym strefa czasowa „prawo / UTC” odpowiada TAI - 10 sekund, a nie TAI. Lub był błąd.

Huygens
źródło
-1

Jest to łatwe: wystarczy uruchomić /usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc raz lub dodać go do crona. Mam to ustawione codziennie.

DSkowroński
źródło
1
Lepiej użyj czegoś takiego jak pool.ntp.orgzamiast stałego adresu IP, aby lepiej zrównoważyć usługę.
Sven
4
także autorzy ntpdate określają go jako nieobsługiwany, przestarzały i przestarzały. Ludzie są zachęcani do korzystania z ntpd i ntp-wait zamiast. Lepiej po prostu mieć zawsze poprawny zegar, niż okresowo skakać do prawidłowego czasu.
gulasz
4
Myślę, że NTP wystawia czas UTC, a nie czas TAI, o który konkretnie prosiłem.
JanKanis,