Maneira fácil de obter o horário atômico internacional no linux?

12

Meu sistema usa o UTC para o relógio do sistema, o que não gosto particularmente de mudar. Existe uma maneira fácil de obter o horário atual do TAI? (de preferência uma ferramenta ou sinalizador de linha de comando)

JanKanis
fonte
2
Deseja obter a diferença entre UTC e TAI para fins informativos (por exemplo, são 12:30:13 UTC e 12:30:45 TAI) ou deseja redefinir o relógio de uma fonte externa para compensar as diferenças acumuladas em seu sistema local?
Sven
1
No momento, apenas para fins informativos. E no caso de eu querer usá-lo na programação, desde TAI, ao contrário UTC, é sempre monótona crescente
JanKanis

Respostas:

9

trabalho em andamento para fornecer suporte nativo ao Linux para TAI. Até então, você pode usar o esquema de relógio para converter em TAI.

David Schwartz
fonte
Hmm, então não há suporte fácil no momento, mas o suporte ao kernel está chegando e precisamos apenas aguardar que os utilitários da terra do usuário suportem a opção CLOCK_TAI.
JanKanis
2

A resposta com o fuso horário "certo /" está incorreta. Ele se destina a converter de um relógio do sistema mantido em TAI - 10s para UTC. Assim, o seguinte fornece a hora correta no UTC, GPS, LOREN e 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'

Os fusos horários corretos podem estar em um local diferente, TZ = "right / UTC", TZ = "../ zoneinfo-leaps / UTC". Substitua "now" pela data / hora que você deseja transformar - a saída está correta para todas as datas após 1/1/1980.

Resultado:

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

prumo
fonte
Na verdade, você está certo sobre a minha resposta. Como você pode ver no exemplo copiado, em 2013 costumava funcionar. No entanto, hoje em 2017, tenho 10 segundos de diferença entre o TAI e o que TZ='right/UTC' dateestá imprimindo.
Huygens
ATENÇÃO: O UTC é ajustado em relação ao GPS e TAI quando os segundos bissextos são atualizados. TAI (Temps Atomique International, é a escala de tempo atômica internacional baseada em uma contagem contínua do segundo SI). Em 2019, o TAI está à frente do UTC em 37 segundos. O TAI está sempre à frente do GPS em 19 segundos. Qualquer sistema que use isso deve ser atualizado para manter "../leaps/UTC" atualizado.
21819 KevinMay
1

A resposta foi preterida : consulte /server//a/812163/67419

Você pode usar o fuso horário "right /" para exibir uma aproximação (<1s) do TAI.

Mas você precisa ter certeza de que seu pacote de fuso horário está atualizado (por exemplo, tzdata no Ubuntu).

Código:

TZ='right/UTC' date

Exemplo:

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

Motivo da depreciação: entre 2013 e hoje, o fuso horário "right / UTC" corresponde a TAI - 10 segundos e não a TAI. Ou houve um erro.

Huygens
fonte
-1

É fácil: basta executar /usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc uma vez ou adicioná-lo ao cron. Eu tenho que definir diariamente.

DSkowronski
fonte
1
É melhor usar algo como, em pool.ntp.orgvez de um endereço IP fixo, para balancear melhor o serviço.
Sven
4
também os autores do ntpdate o rotulam como não mantido, obsoleto e obsoleto. As pessoas são incentivadas a usar o ntpd e o ntp-wait. É melhor manter o relógio sempre correto do que saltar repentinamente para a hora correta periodicamente.
stew
4
Acho que o NTP emite o horário UTC, não o horário TAI, que solicitei especificamente.
JanKanis