Как Ubuntu синхронизирует время без ntp?

39

Нажав «Настройки системы -> Время и дата -> Автоматически из Интернета», я могу синхронизировать время из Интернета.

Тем не менее, я обнаружил, что у меня нет ntpdдемона (он даже не установлен). Так как же работает синхронизация?

n3v3rm03
источник
6
Обратите внимание, что этот интерфейс, IMHO, вводит в заблуждение. Это должна быть кнопка, а не переключатель, потому что она запускает одноразовое действие, используя ntpdate, --- вы должны установить вручную, ntpчтобы обеспечить непрерывную синхронизацию времени с Интернетом. Я сообщил об этом в bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/…
Rmano
Я не уверен, что это вводит в заблуждение. У меня сложилось впечатление, что он запускал ntpdate один раз при каждой загрузке, если эта опция не была отключена. Кто-нибудь может подтвердить?
Томасруттер
в Kubuntu 16.04 виджет часов даже не показывает Automatically from the Internetопцию или что-либо подобное.
kmonsoor

Ответы:

38

Это делается путем синхронизации с ntpdateинструментом.

man ntpdate

NAME
       ntpdate - set the date and time via NTP

ntpdate sets the local date and time by polling the Network Time Proto‐
       col (NTP) server(s) given as the server arguments to determine the cor‐
       rect time. It must be run as root on the local host (unless the  option
       -q  is used). A number of samples are obtained from each of the servers
       specified and a subset of the NTP clock filter and selection algorithms
       are  applied  to  select  the best of these. Note that the accuracy and
       reliability of ntpdate depends on the number of servers, the number  of
       polls each time it is run and the interval between runs.

       ntpdate  can  be run manually as necessary to set the host clock, or it
       can be run from the host startup script to set the clock at boot  time.
       This is useful in some cases to set the clock initially before starting
       the NTP daemon ntpd. It is also possible to run  ntpdate  from  a  cron
       script.  However,  it  is important to note that ntpdate with contrived
       cron scripts is no substitute for the NTP daemon, which uses  sophisti‐
       cated  algorithms to maximize accuracy and reliability while minimizing
       resource use. Finally, since ntpdate does not discipline the host clock
       frequency as does ntpd, the accuracy using ntpdate is limited.

Вы можете сделать это с

sudo ntpdate TIME-SERVER

Списки TIME-SERVER можно найти здесь

Maythux
источник
6
но вопрос в том, Ntpdate не устанавливается по умолчанию в Ubuntu, так как делает Ubuntu никогда синхронизации времени?
Джон Аллард
2
Примечание: этот принятый ответ очень устарел. В последних версиях Ubuntu (16.04+) вместо ntpdate используется timedatectl. timedatectl управляет службой timed для systemd.
Кори Голдберг
Да, этот ответ не по теме. Это не «как синхронизировать время без ntpd + ntpq», а «как UBUNTU делает это без всего вышеперечисленного (ntpdate / ntpq). Я нашел этот вопрос сразу после того, как заметил, что мои часы синхронизированы, и я ожидал, что они выключены по крайней мере на несколько десятков секунд (Ubuntu 18.04). Я также помню, что это за полноценный NTPd, когда он отказывается синхронизировать время «слишком далеко» и т. д. А теперь - часы синхронизируются! Магия.
Томаш Гандор
21

Ubuntu синхронизируется с ntpdateутилитой один раз при каждом подключении к сети (что обычно происходит при загрузке).

Эта утилита устанавливается по умолчанию, но запускается только тогда, когда ее вызывает Ubuntu, и не работает в фоновом режиме в качестве демона.

При установке ntpпакета устанавливается демон NTP. Демон ntp позволяет постоянно синхронизировать время во время работы системы.


Обновление : в последних версиях Ubuntu (например, 16.04) ntpdateзаменено на timedatectl, которое синхронизируется один раз при загрузке, а также при подключении к сети, но не работает в другое время. См. Https://help.ubuntu.com/lts/serverguide/NTP.html для получения дополнительной информации.

thomasrutter
источник
4
Это не при каждой загрузке, само по себе; следовать dpkg-query --listfiles ntpdateк /etc/network/if-up.d/ntpdate.
rndrük
1
Ах, спасибо, так что я думаю, что каждый раз, когда появляется сетевой интерфейс, это не обязательно будет каждой загрузкой для всех.
Томасруттер
ах ты уверен что это установлено по умолчанию? Я сижу здесь на шлепающем новом экземпляре сервера Ubuntu 16.04, а утилита ntpdate не установлена.
Джон Аллард
ntpdate был установлен по умолчанию в 14.04, но больше не в 16.04, теперь он считается устаревшим, поскольку timedatectlработает аналогично - он устанавливается по умолчанию и синхронизируется один раз при загрузке, но также и при подключении к сети.
Томасруттер
12

Для тех из вас, у кого 16.04 LTS синхронизация времени, кажется, обрабатывается sytemd специально "timedatectl"

timedatectl status
Local time: Wed 2016-11-30 17:45:18 CST
Universal time: Wed 2016-11-30 23:45:18 UTC
RTC time: Sun 2016-12-04 06:50:39
Time zone: America/Chicago (CST, -0600)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

Конфиг есть

/etc/systemd/timesyncd.conf

Больше информации здесь: Синхронизация времени с NTP И timedatectl

MysticRyuujin
источник
1
Это лучший ответ на данный момент. Остальное практически не по теме (кроме отредактированных, в которых упоминается systemd-timedatectl).
Томаш Гандор
2

Также обратите внимание, что вполне возможно наличие интерфейсного интерфейса для службы, которая не установлена.

Вы можете изменить настройки в этом интерфейсном интерфейсе (GUI) сколько хотите, но если служба, которая фактически выполняет задачи, не установлена, ничего не произойдет.

Обратите внимание, однако, что я думаю, что «переключатель» действителен, потому что он говорит, что он должен сделать одноразовое обновление при КАЖДОЙ загрузке. (или не делать этого).

Если это не система, не подключенная к сети, или есть какая-то другая первостепенная причина НЕ устанавливать время, чтобы оно соответствовало «стандартному» времени, я настоятельно рекомендую вам установить ntpd, а также правильно настроить и запустить его.

sdfgsdfg
источник
1

См .: https://help.ubuntu.com/community/UbuntuTime.

Ubuntu поставляется с ntpdate в стандартной комплектации и запускает его один раз во время загрузки, чтобы настроить время в соответствии с NTP-сервером Ubuntu. Тем не менее, часы системы могут значительно дрейфовать между перезагрузками, если время между перезагрузками велико. В этом случае имеет смысл иногда исправлять время. Самый простой способ сделать это - заставить cron запускать его каждый день.

ntpdate ntp.ubuntu.com
Фади
источник
Или вы можете использовать ntpd( help.ubuntu.com/lts/serverguide/NTP.html#ntpd ) для поддержки синхронизации.
Гаурав
К вашему сведению, страница, которую вы указали, не обновлена ​​до 16.04, поэтому не очень полезна.
kmonsoor
1

По какой-то причине, 16.04, ответ Maythux не работает сразу.

Но, взяв на себя инициативу, это сработало для меня.

$ sudo ntpdate-debian

Обратите внимание, что это требует sudoпривилегий, очевидно.

Под капотом используется ntpdateинструмент, отличающийся только файлом конфигурации.

ntpdate-debian идентично ntpdate(8) что использует конфигурацию /etc/default/ntpdateпо умолчанию. ntpdate устанавливает локальную дату и время, опрашивая серверы Network Time Protocol (NTP).

kmonsoor
источник
16.04 использует systemd, поэтому я ожидаю, что у него будет эквивалентная новая команда для использования.
Rinzwind
@Rinzwind, это было бы здорово, конечно. К сожалению, предположительно главная страница в Ubuntu wiki не обновляется до 16.04. Он показывает сообщение «Эта статья нуждается в обновлении, чтобы включить последние версии Ubuntu».
kmonsoor
По крайней мере, в 14.04 sudo ntpdate-debianделает так же, как sudo ntpdate ntp.ubuntu.com. Странно, почему они взяли и настроили этот пакет из Debian, когда мы читали его is identical to ntpdate(8) except that it uses the configuration in /etc/default/ntpdate by defaultи перехватывали этот файл, который читаем NTPDATE_USE_NTP_CONF=yes # List of NTP servers to use (Separate multiple servers with spaces.) # Not used if NTPDATE_USE_NTP_CONF is yes. NTPSERVERS="ntp.ubuntu.com"???
полезно
1

Ну, более поздние выпуски Ubuntu часто делают это, используя chrony, который является альтернативной реализацией ntp с некоторыми отличиями:

  1. Некоторые из редко используемых функций ntp не реализованы
  2. Он пытается хорошо справиться с ситуацией, когда у вас есть прерывистый доступ к сети - при подключении он синхронизирует локальные часы и отслеживает, насколько быстро он дрейфует. Когда он отключен, он использует местные часы, но настраивает время, чтобы учесть, как он обычно дрейфует.

Смотрите https://chrony.tuxfamily.org/ для получения дополнительной информации.

Марк Филлипс
источник