Чи автоматично 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 деактивує такі сервери швидко, але не миттєво. І видатні урядові сервери не кращі. (Хоча я думаю, що цього разу були 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 без перезавантаження залишить ядро ​​у стані, коли воно вставить стрибну секунду.
kasperd

1
@kasperd Я погоджуюся з вашими загальними міркуваннями, але я не думаю, що NTP ніколи не був встановлений у тій системі, яку я створив лише на кілька (хоча і більше, ніж на один день) раніше. Дві можливості приходять мені в голову. Це віртуальна машина VMware, і хоча я не встановив жодних драйверів VMware, я вважаю, що в Ubuntu їх уже є. Можливо, такий драйвер дізнався про високосну секунду від хост-машини? Окрім цього, я очікую, що під час встановлення був залучений NTP, хоча я не впевнений, як це було зроблено для перезавантаження. Я думаю, що mini.isoсам має NTP, і дебін-інсталятор використовує його.
Елія Каган

1
@EliahKagan, я не перевіряв, але клієнт ntp за замовчуванням може бути chrony.
Carsten S

2
@CarstenS Виявляється, systemd-timesyncd (8) синхронізував годинник моєї мінімальної системи. Я не думав про це, і це з’ясувалося напіввипадковою ситуацією: grep -RPis '(?<!mou)ntp' /var/logвиявив ці 14 ліній syslog , показуючи синхронізацію часу від хоста, який, як буває, має ntpйого ім'я. З огляду на це, має сенс, що таємнича служба, про яку я ніколи не знав, була частиною системи. (Btw, хороший пункт про хроніку, яку я не перевіряв на жодну; вона не встановлена.)
Елія Каган
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.