Будет ли Ubuntu автоматически адаптироваться к високосной секунде в конце года (2016)?

43

BBC сообщает:

Дополнительная секунда будет добавлена ​​к мировым часам в канун Нового года, чтобы синхронизироваться с вращением Земли.

Означает ли это, что мне нужно что-то делать, чтобы моя машина с Ubuntu успевала с этим, или она автоматически настроится так, чтобы не отключаться ни на секунду?

Каз Вулф
источник
2
Возможно, вам понравится это видео (в котором также обсуждаются високосные секунды) youtube.com/watch?v=-5wpm-gesOY
Thorbjørn Ravn Andersen
1
@ ThorbjørnRavnAndersen О, это Том Скотт!
Исмаэль Мигель

Ответы:

34

Если ваша машина с Ubuntu слушает NTP и синхронизирует время с Интернетом, система автоматически настроится на разницу во времени.

Хотя ваш компьютер может и не знать о том, что произошла високосная секунда, он будет перехватывать и записывать событие, когда NTP-серверы проталкивают изменения по всему Интернету.

Если вы не чувствуете, что добавляется дополнительная секунда, вы можете принудительно выполнить обновление, используя следующую команду:

sudo ntpdate -s pool.ntp.org

Это автоматически выполнит геолокацию, чтобы предоставить вам ближайший сервер (уменьшив ошибку задержки), а Ubuntu отрегулирует ваш часовой пояс (так что, если сервер находится в другом часовом поясе, все в порядке). В качестве альтернативы вы можете использовать ntp.ubuntu.com.

Обратите внимание, что если вам не повезло, ни один из серверов времени, которые вы используете, не будет правильно обрабатывать скачок секунды. Это маловероятно, но возможно. Рекомендуется сверяться вручную с известным хорошим источником (аналоговое радио, возможно time.is ).


В качестве альтернативы, если вы используете современную версию Ubuntu, есть встроенная утилита, которая называется timedatectl. По умолчанию это запускается один раз автоматически при запуске. Следовательно, быстрая перезагрузка может вызвать синхронизацию при необходимости.

Каз Вулф
источник
1
В Великобритании использование time.nist.gov все еще работает. Ubuntu настраивает то, что сообщает для моего часового пояса. Я предполагаю, что то же самое верно для всех часовых поясов
Тим
2
@Tim Да, но синхронизация с сервером в США имеет более высокую задержку = более высокую частоту ошибок ... так что это работает, но конечный результат менее точен, чем при использовании более близкого сервера.
Бакуриу
1
Попробуй pool.ntp.orgвместо этого; это всегда должно подобрать что-то относительно близкое вам.
Майкл Хэмптон
3
Этот ответ проблематичен. 1.) Если вам не повезло, ни один из серверов времени, которые вы используете, не будет правильно обрабатывать скачок секунды. Это маловероятно, но возможно. 2.) Если ntpdзапущен, ntpdateодновременный запуск приведет в замешательство. Лучше остановить это первым. А еще лучше не бегать ntpdateвообще. 3.) Серверы времени NIST не нуждаются в дополнительном трафике от Stack Exchange; ntp.ubuntu.comили pool.ntp.orgбыло бы лучше. 4.) Великобритания на самом деле использует uk.pool.ntp.org, но pool.ntp.orgвсе равно будет выполнять геолокацию.
Мэтт Нордхофф
Я забыл один. 5.) Если вы работаете ntpdateсо случайными серверами времени, и вам снова очень не повезло, вы будете использовать тот, который также не смог правильно обработать скачок секунды! NTP Pool отключает такие серверы быстро, но не мгновенно. И выдающиеся государственные серверы не лучше. (Хотя я думаю, что NIST были на этот раз.)
Мэтт Нордхофф
17

Временные секунды автоматически обрабатываются ядром Linux, перезагрузка или синхронизация NTP не требуются, чтобы сохранить фактическое время. Если вы посмотрите в системном журнале, вы увидите нечто похожее на

[263284.397894] Clock: inserting leap second 23:59:60 UTC

Так 23:59:60как Linux не является действительным временем, ваши часы дойдут 00:00:00, а затем вернитесь к 23:59:59. Любые объекты, созданные в течение этой секунды (например, файлы), могут быть несовместимы.

Что касается времени Linux (в отличие от реального времени), високосных секунд не существует:

# date -d "2016-12-31 23:59:59" +%s
1483225199
# date -d "2017-01-01 00:00:00" +%s
1483225200
Дмитрий Григорьев
источник
2
Мои журналы появляются, чтобы подтвердить этот ответ. Я недавно побежал dmesg | grep 'leap second'на своей основной машине 16.04, и это показало [1153894.866672] Clock: inserting leap second 23:59:60 UTC. Это, с разными номерами в начале, также было показано на моей минимальной 16.04 ВМ, установленной с mini.iso, которую я использую для тестирования. Эта минимальная система не ntpdработает, и не имеет ни из ntpили openntpdпакетов , установленных.
Элия ​​Каган
2
@EliahKagan Конечно, ядро ​​не имеет списка всех будущих високосных секунд. Ядро имеет логику для вставки високосной секунды, но что-то должно сказать ядру, что должна быть вставлена ​​високосная секунда. Я не знаю ничего, кроме NTP, которое может сказать ядру, чтобы он вставил дополнительную секунду. Обратите внимание, что если ядру уже было дано указание вставить дополнительную секунду, удаление NTP без перезагрузки приведет к тому, что ядро ​​будет вставлено в дополнительную секунду.
17
1
@kasperd Я согласен с вашими общими соображениями, но я не думаю, что NTP когда-либо был установлен в этой системе, которую я установил всего несколькими (хотя и более чем) днями ранее. Две возможности приходят мне на ум. Это виртуальная машина VMware, и хотя я не установил никаких драйверов VMware, я считаю, что в Ubuntu они уже есть. Может ли такой драйвер узнать о високосной секунде с хост-машины? Кроме того, я ожидаю, что NTP был задействован во время установки, хотя я не уверен, как это было сделано для перезагрузки. Я думаю, что mini.isoсам по себе имеет NTP и использует его установщик Debian.
Элия ​​Каган
1
@EliahKagan, я не проверял, но по умолчанию может быть ntp клиент chrony.
Карстен С
2
@CarstenS Оказывается, systemd-timesyncd (8) синхронизировал часы моей минимальной системы. Я не подумал об этом и выяснил это полуслучайно: grep -RPis '(?<!mou)ntp' /var/logобнаружил эти 14 строк системного журнала , показывающих синхронизацию времени с хостом, который , как оказалось, имеет ntpсвое имя. Оглядываясь назад, имеет смысл, что таинственный сервис, который я никогда не знал, был частью systemd. (Кстати, хорошее замечание по поводу хроники, которую я тоже не проверял; хотя она не установлена.)
Элия ​​Каган