Простой способ получить Международное атомное время на Linux?
12
Моя система использует UTC для системных часов, которые я не особо хочу менять. Есть ли простой способ узнать текущее время TAI? (желательно инструмент командной строки или флаг)
Хотите узнать разницу между UTC и TAI в информационных целях (например, это 12:30:13 UTC и 12:30:45 TAI) или вы хотите сбросить часы из внешнего источника, чтобы компенсировать накопленные различия на ваша локальная система?
Свен
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 = "right / UTC", TZ = "../ zoneinfo-leaps / UTC". Замените «сейчас» на дату / время, которое вы хотите преобразовать - выходные данные верны для каждой даты после 1 января 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
На самом деле вы правы относительно моего ответа. Как видно из скопированного примера, в 2013 году он работал. Однако сегодня, в 2017 году, у меня разница в 10 секунд между TAI и тем, что TZ='right/UTC' dateпечатает.
Гюйгенс
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: UTC настраивается относительно GPS и TAI при обновлении високосных секунд. TAI (Temps Atomique International, международная атомная шкала времени, основанная на непрерывном отсчете секунды SI). В 2019 году TAI опережает UTC на 37 секунд. TAI всегда опережает GPS на 19 секунд. Любая система, использующая это, должна быть обновлена, чтобы поддерживать "../leaps/UTC" в актуальном состоянии.
Это легко сделать: просто запустите
/usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc
один раз или добавьте его в cron. У меня это установлено ежедневно.
Лучше использовать что-то вроде pool.ntp.orgвместо фиксированного IP-адреса, чтобы лучше сбалансировать загрузку сервиса.
Свен
4
также авторы ntpdate помечают его как необслуживаемый, устаревший и устаревший. Людям рекомендуется использовать ntpd и ntp-wait вместо этого. Лучше, чтобы ваши часы всегда были правильными, чем если бы они внезапно периодически переходили на правильное время.
тушить
4
Я думаю, что NTP выдает время UTC, а не время TAI, которое я специально просил.
Ответы:
Идет работа над тем, чтобы предоставить Linux поддержку TAI. До этого вы можете использовать схему-часы для преобразования в TAI.
источник
Ответ с «правильным /» часовым поясом неверен. Он предназначен для преобразования системных часов, хранящихся в TAI-10, в UTC. Таким образом, следующее дает правильное время в UTC, GPS, LOREN и TAI [1]:
Правильные часовые пояса могут быть в другом месте, TZ = "right / UTC", TZ = "../ zoneinfo-leaps / UTC". Замените «сейчас» на дату / время, которое вы хотите преобразовать - выходные данные верны для каждой даты после 1 января 1980 года.
Выход:
[1] http://www.leapsecond.com/java/gpsclock.htm
источник
TZ='right/UTC' date
печатает.Ответ устарел : см. Https://serverfault.com/a/812163/67419
Вы можете использовать часовой пояс «вправо /» для отображения приблизительного значения (<1 с) TAI.
Но вы должны убедиться, что ваш пакет с часовым поясом обновлен (например, tzdata в Ubuntu).
Код:
Пример:
Причина амортизации: с 2013 года по сегодняшний день часовой пояс «вправо / UTC» соответствует TAI - 10 секунд, а не TAI. Или была ошибка.
источник
Это легко сделать: просто запустите
/usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc
один раз или добавьте его в cron. У меня это установлено ежедневно.источник
pool.ntp.org
вместо фиксированного IP-адреса, чтобы лучше сбалансировать загрузку сервиса.