Un moyen facile d'obtenir l'heure internationale atomique sur Linux?

12

Mon système utilise UTC pour l'horloge système, que je n'ai pas particulièrement envie de modifier. Existe-t-il un moyen simple d'obtenir l'heure TAI actuelle? (de préférence un outil ou un indicateur de ligne de commande)

JanKanis
la source
2
Voulez-vous obtenir la différence entre UTC et TAI à des fins d'information (par exemple, il est 12:30:13 UTC et 12:30:45 TAI) ou voulez-vous réinitialiser l'horloge à partir d'une source externe pour compenser les différences accumulées sur votre système local?
Sven
1
Pour le moment juste à titre informatif. Et au cas où je souhaiterais l'utiliser dans la programmation, car TAI, contrairement à UTC, augmente toujours de façon monotone
JanKanis

Réponses:

9

Des travaux sont en cours pour fournir une prise en charge native de Linux pour TAI. Jusque-là, vous pouvez utiliser le schéma-horloge pour convertir en TAI.

David Schwartz
la source
Hmm, donc il n'y a pas de support facile actuellement, mais le support du noyau arrive et nous devons juste attendre que les utilitaires de l'espace utilisateur prennent en charge l'option CLOCK_TAI.
JanKanis
2

La réponse avec le fuseau horaire "droit /" est incorrecte. Il est destiné à convertir une horloge système conservée en TAI - 10s en UTC. Ainsi, ce qui suit donne l'heure correcte en UTC, GPS, LOREN et 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'

Les fuseaux horaires appropriés peuvent se trouver à un emplacement différent, TZ = "right / UTC", TZ = "../ zoneinfo-leaps / UTC". Remplacez "maintenant" par la date / heure que vous souhaitez transformer - la sortie est correcte pour chaque date après le 1/1/1980.

Production:

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
la source
En effet, vous avez raison sur ma réponse. Comme vous pouvez le voir dans l'exemple copié, en 2013, cela fonctionnait. Cependant, aujourd'hui en 2017, j'ai 10 secondes de différence entre TAI et ce qui TZ='right/UTC' dateest en cours d'impression.
Huygens
VEUILLEZ NOTER: UTC est ajusté par rapport au GPS et au TAI lorsque les secondes intercalaires sont mises à jour. TAI (Temps Atomique International, est l'échelle de temps atomique internationale basée sur un comptage continu de la seconde SI). En 2019, TAI devance l'UTC de 37 secondes. TAI est toujours en avance sur le GPS de 19 secondes. Tout système utilisant ceci doit être mis à jour, pour maintenir "../leaps/UTC" à jour.
KevinM
1

La réponse est obsolète : voir /server//a/812163/67419

Vous pouvez utiliser le fuseau horaire "droite /" pour afficher une approximation (<1s) du TAI.

Mais vous devez vous assurer que votre package de fuseau horaire est à jour (par exemple tzdata sur Ubuntu).

Code:

TZ='right/UTC' date

Exemple:

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

Raison de l'amortissement: entre 2013 et aujourd'hui, le fuseau horaire "droite / UTC" correspond à TAI - 10 secondes et non TAI. Ou il y avait un bug.

Huygens
la source
-1

C'est facile à faire: il suffit de l'exécuter /usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc une fois ou de l'ajouter à cron. Je l'ai réglé quotidiennement.

DSkowronski
la source
1
Mieux vaut utiliser quelque chose comme pool.ntp.orgau lieu d'une adresse IP fixe pour mieux équilibrer la charge du service.
Sven
4
les auteurs de ntpdate le considèrent également comme non entretenu, obsolète et obsolète. Les gens sont encouragés à utiliser à la place ntpd et ntp-wait. Il vaut mieux que votre horloge soit toujours correcte que de la faire sauter soudainement à l'heure correcte périodiquement.
ragoût du
4
Je pense que NTP émet l'heure UTC, pas l'heure TAI que j'ai spécifiquement demandée.
JanKanis