Einfache Möglichkeit, die Internationale Atomzeit unter Linux zu bekommen?

12

Mein System verwendet UTC für die Systemuhr, die ich nicht unbedingt ändern möchte. Gibt es eine einfache Möglichkeit, die aktuelle TAI-Zeit zu ermitteln? (vorzugsweise ein Befehlszeilentool oder ein Flag)

JanKanis
quelle
2
Möchten Sie die Differenz zwischen UTC und TAI zu Informationszwecken ermitteln (z. B. ist es 12:30:13 UTC und 12:30:45 TAI) oder möchten Sie die Uhr von einer externen Quelle zurücksetzen, um akkumulierte Differenzen auf auszugleichen Ihr lokales System?
Sven
1
Im Moment nur zu Informationszwecken. Und falls ich es jemals in der Programmierung verwenden möchte, da TAI im Gegensatz zu UTC immer monoton ansteigt
JanKanis

Antworten:

9

Derzeit wird daran gearbeitet , Linux native Unterstützung für TAI zu bieten. Bis dahin können Sie Schema-Clock verwenden , um in TAI zu konvertieren.

David Schwartz
quelle
Hmm, es gibt derzeit also keine einfache Unterstützung, aber die Kernel-Unterstützung kommt und dann müssen wir nur auf Userland-Dienstprogramme warten, um die CLOCK_TAI-Option zu unterstützen.
JanKanis
2

Die Antwort mit der "richtigen /" Zeitzone ist falsch. Es ist für die Konvertierung von einer in TAI - 10s gespeicherten Systemuhr nach UTC vorgesehen. Das Folgende gibt also die korrekte Zeit in UTC, GPS, LOREN und TAI an [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'

Die richtigen Zeitzonen befinden sich möglicherweise an einem anderen Ort, TZ = "right / UTC", TZ = "../ zoneinfo-leaps / UTC". Ersetzen Sie "jetzt" durch das Datum / die Uhrzeit, die Sie transformieren möchten - die Ausgabe ist für jedes Datum nach dem 1.1.1980 korrekt.

Ausgabe:

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

Bob
quelle
In der Tat sind Sie in Bezug auf meine Antwort richtig. Wie Sie dem kopierten Beispiel entnehmen können, hat es 2013 funktioniert. Heute im Jahr 2017 habe ich jedoch 10 Sekunden Unterschied zwischen TAI und dem, was TZ='right/UTC' dategedruckt wird.
Huygens
BITTE BEACHTEN SIE: Die UTC wird in Bezug auf GPS und TAI angepasst, wenn Schaltsekunden aktualisiert werden. TAI (Temps Atomique International) ist die internationale Atomzeitskala, die auf einer kontinuierlichen Zählung der SI-Sekunde basiert. Im Jahr 2019 liegt TAI 37 Sekunden vor UTC. TAI ist dem GPS immer um 19 Sekunden voraus. Jedes System, das dies verwendet, muss aktualisiert werden, um "../leaps/UTC" auf dem neuesten Stand zu halten.
KevinM
1

Antwort ist veraltet : siehe /server//a/812163/67419

Sie können die Zeitzone "rechts /" verwenden, um eine Annäherung (<1s) des TAI anzuzeigen.

Sie müssen jedoch sicherstellen, dass Ihr Zeitzonenpaket auf dem neuesten Stand ist (z. B. tzdata unter Ubuntu).

Code:

TZ='right/UTC' date

Beispiel:

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

Abwertungsgrund: Zwischen 2013 und heute entspricht die Zeitzone "rechts / UTC" TAI - 10 Sekunden und nicht TAI. Oder es gab einen Fehler.

Huygens
quelle
-1

Es ist ganz einfach: einfach /usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc einmal ausführen oder zu cron hinzufügen. Ich habe es täglich eingestellt.

DSkowronski
quelle
1
Verwenden Sie pool.ntp.orgstatt einer festen IP-Adresse lieber so etwas wie , um den Dienst besser auszubalancieren.
Sven
4
Auch die Autoren von ntpdate bezeichnen es als nicht gewartet, veraltet und veraltet. Die Leute werden ermutigt, stattdessen ntpd und ntp-wait zu verwenden. Es ist besser, wenn Ihre Uhr immer richtig ist, als wenn sie plötzlich in regelmäßigen Abständen zur richtigen Zeit springt.
Eintopf
4
Ich denke, NTP gibt die UTC-Zeit aus, nicht die TAI-Zeit, nach der ich speziell gefragt habe.
JanKanis