Простий спосіб отримати Міжнародний атомний час на Linux?


12

Моя система використовує UTC для системного годинника, що мені особливо не подобається змінювати. Чи є простий спосіб отримати поточний час TAI? (бажано інструмент або прапор командного рядка)


2
Ви хочете отримати різницю між UTC та TAI в інформаційних цілях (наприклад, це 12:30:13 UTC та 12:30:45 TAI) чи ви хочете скинути годинник із зовнішнього джерела, щоб компенсувати накопичені відмінності на ваша локальна система?
Sven

1
На даний момент лише в інформаційних цілях. І якщо я коли-небудь захочу використовувати його в програмуванні, оскільки TAI, на відміну від UTC, завжди монотонно зростає
JanKanis

Відповіді:


9

Наразі триває робота з надання вбудованої підтримки Linux для TAI. До цього часу ви можете використовувати схему-годинник для перетворення в TAI.


Хм, тому наразі не існує простої підтримки, але підтримка ядра надходить, і тоді нам просто потрібно дочекатися, коли утиліти користувача для підтримки опції CLOCK_TAI.
JanKanis

2

Відповідь із часовим поясом "правильний /" неправильна. Він призначений для перетворення з системних годин, що зберігаються в TAI - 10 с, в UTC. Таким чином, подано правильний час у UTC, GPS, LOREN та 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'

Правильні часові пояси можуть бути в іншому місці, TZ = "право / UTC", TZ = "../ zoneinfo-skops / UTC". Замініть "зараз" датою / часом, який ви хочете перетворити - вихід правильний для кожної дати після 1.01.1980.

Вихід:

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


Дійсно, ви вірно оцінили мою відповідь. Як видно з скопійованого прикладу, у 2013 році він працював. Однак сьогодні у 2017 році у мене є 10 секунд різниці між TAI і тим, що TZ='right/UTC' dateдрукує.
Гюйгенс

УВАГА: Примітка: UTC регулюється стосовно GPS та TAI при оновленні високосних секунд. TAI (Temps Atomique International - міжнародна атомна шкала часу, заснована на безперервному підрахунку СІ секунди). У 2019 році TAI випередить UTC на 37 секунд. TAI завжди випереджає GPS на 19 секунд. Будь-яка система, що використовує це, має бути оновлена, щоб "../leaps/UTC" оновлюватися.
KevinM

1

Відповідь застаріло : див. Https://serverfault.com/a/812163/67419

Ви можете використовувати часовий пояс "право /", щоб відобразити наближення (<1s) TAI.

Але вам потрібно переконатися, що пакет часового поясу оновлений (наприклад, tzdata на Ubuntu).

Код:

TZ='right/UTC' date

Приклад:

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

Причина амортизації: між 2013 та сьогодні часовий пояс "право / UTC" відповідає TAI - 10 секунд, а не TAI. Або була помилка.


-1

Це легко зробити: просто запустіть /usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc один раз або додайте його в cron. У мене це встановлено щодня.


1
Краще скористайтеся чимось на зразок pool.ntp.orgзамість фіксованої IP-адреси, щоб завантажувати баланс служби краще.
Sven

4
також автори ntpdate позначають його як незбережене, застаріле та застаріле. Людям рекомендується замість цього використовувати ntpd та ntp-wait. Краще просто мати годинник завжди правильним, ніж раптово періодично переходити до правильного часу.
тушковане

4
Я думаю, що NTP видає час UTC, а не час TAI, про який я спеціально просив.
JanKanis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.