Назад | Перейти на главную страницу

Простой способ узнать международное атомное время в Linux?

Моя система использует всемирное координированное время в качестве системных часов, и мне не особо хочется их менять. Есть ли простой способ узнать текущее время TAI? (желательно инструмент командной строки или флаг)

Там есть работа в процессе чтобы обеспечить поддержку TAI в Linux. А пока вы можете использовать схема-часы конвертировать в TAI.

Ответ с часовым поясом "правильный /" неверен. Он предназначен для преобразования системных часов, хранящихся в 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". Замените «сейчас» на дату / время, которые вы хотите преобразовать - вывод верен для каждой даты после 01.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

Ответ устарел: видеть https://serverfault.com/a/812163/67419

Вы можете использовать часовой пояс "right /" для отображения приблизительного значения TAI (<1 с).

Но вам нужно убедиться, что ваш пакет часовых поясов обновлен (например, 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. Или произошла ошибка.

Это легко сделать: просто беги /usr/sbin/ntpdate pool.ntp.org;/sbin/hwclock --systohc один раз или добавьте его в cron. Я настроил его на ежедневное использование.