Моя система использует всемирное координированное время в качестве системных часов, и мне не особо хочется их менять. Есть ли простой способ узнать текущее время 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
Ответ устарел: видеть 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. Я настроил его на ежедневное использование.