Почему часы Ubuntu становятся медленнее или быстрее?

Часы Ubuntu выключены приблизительно на половину часа:

Ubuntu Time & Date v. The official U.S. time

Где я даже начинаю диагностировать это?

Это предположительно устанавливается "автоматически из Интернета". Как я могу проверить, что "Интернет" знает, во сколько это?

Подробнее

Ubuntu имела много времени для общения с Интернетом:

$ date; uptime
Fri May 18 05:56:00 PDT 2012
 05:56:00 up 12 days, 10:48,  2 users,  load average: 0.61, 0.96, 1.15

Этот сервер времени, который я нашел через веб-поиск, действительно кажется, знает корректное время:

$ date; ntpdate -q north-america.pool.ntp.org
Fri May 18 05:56:09 PDT 2012
server 208.38.65.37, stratum 2, offset 1752.625337, delay 0.10558
server 46.166.138.172, stratum 2, offset 1752.648597, delay 0.10629
server 205.189.158.228, stratum 3, offset 1752.672466, delay 0.11829
18 May 05:56:18 ntpdate[29752]: step time server 208.38.65.37 offset 1752.625337 sec

Нет никаких ошибок, о которых сообщают, связанных с NTP:

$ grep -ic ntp /var/log/syslog
0

После перезагрузки было автоматически исправлено время, и следующее появилось в /var/log/syslog:

May 18 17:58:12 aux ntpdate[1891]: step time server 91.189.94.4 offset 1838.497277 sec

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

$ while true; do ntpdate-debian -q | tail -n 1 >> 'drift.log'; sleep 16m; done
^C
$ r -e '
    attach(read.table("drift.log", header=FALSE))
    clock <- as.POSIXct(paste(V1, V2, V3), format="%d %b %H:%M:%S")
    fit <- lm(V10~clock)
    png("drift.png")
    plot(clock, V10, xlab="Clock time", ylab="Time server offset (s)")
    abline(fit)
    mtext(sprintf("Drift rate: %.2f s/hr", fit$coefficients[[2]]*3600))
'

Clock time v. Time server offset

16
задан 6 December 2013 в 20:27

4 ответа

У меня была похожая проблема, и она была вызвана чем-то в брандмауэре. В конце я добавил почасовую работу cron , но добавил аргумент -u в ntpdate, чтобы заставить его использовать нестандартный порт.

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

0
ответ дан 6 December 2013 в 20:27

Это может произойти, если вы установили демон времени ntp, а время на вашем компьютере слишком далеко, чтобы исправить это быстро.

Чтобы исправить это, откройте терминал и выполните

  sudo service ntp stop
  sudo ntpdate swisstime.ethz.ch
  date
  sudo service ntp start

Что это делает:

  1. Остановите демон ntp
  2. Установите часы
  3. Время теперь должно быть подходящим
  4. restart ntp daemon

Если у вас не установлен ntp, сделайте это с

  sudo apt-get install update

Обновление: Использование ntpdate в задании cron, как было рекомендовано здесь, приводит к тонким проблемам.

ntpdate будет делать скачок времени каждый час или около того. Использование ntp позволяет избежать этой проблемы, потому что оно будет регулировать время, наклоняя часы. Кроме того, хотя выбор ntp-сервера в окрестности дает еще более высокую точность, в этом нет необходимости. Файл конфигурации ntp по умолчанию содержит несколько серверов, и сервер автоматически компенсирует любые задержки.

Итог: - используйте ntp - если далеко, выключите ntp, запустите ntpdate один раз и перезапустите ntp.

0
ответ дан 6 December 2013 в 20:27

- Обычно время синхронизируется один раз при каждой загрузке или пробуждении из спящего режима

. Таким образом, проблема заключается либо в том, что сервер времени Ubuntu по умолчанию (что это такое) ?) имеет неправильное время, или Ubuntu не устанавливает время автоматически из Интернета.

Нет, сервер времени в Ubuntu работает правильно, и он автоматически устанавливает время с него.

Проблема в том, что обычно это происходит только один раз при каждой загрузке (или, если быть более точным, при каждом запуске сетевого интерфейса - будь то выключение, спящий режим или спящий режим) ). Исходя из вашего времени безотказной работы, можно с уверенностью сказать, что оно не было синхронизировано более недели. И ваши системные часы почему-то работают немного быстро.

- Установите почасовую cron работу для синхронизации, если вы не часто перезагружаетесь, или ваш сервер / рабочий стол никогда не засыпает

. Лучше всего, чтобы настроить работу cron, я скажу ежечасно, если вы хотите сверхточное время. Самый простой способ сделать это:

  • sudo editor /etc/cron.hourly/ntpsync

Добавить следующие строки:

#!/bin/bash

ntpdate ntp.ubuntu.com #or your choice of server
  • сохранить, выйти и sudo chmod +x /etc/cron.hourly/ntpsync

Вы можете поместить это в /etc/cron.daily вместо этого, если хотите, один раз в день.

0
ответ дан 6 December 2013 в 20:27

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

Он не только устанавливает время, но и непрерывно регулирует настройку того, как ваш компьютер хранит время, так что его время не только точно в один момент времени, но и близко к реальному время (в течение десятков миллисекунд, а не десятков минут). Он регулирует как фазу (время), так и частоту (как быстро «тикают» часы). NTP никогда не заставляет часы вращаться задом наперед. Чтобы определить, как быстро тикают часы после перезагрузки, может потребоваться много времени, поэтому ntp отслеживает дрейф в файле /var/lib/ntp/ntp.drift. Так как вы не запускаете ntp, ничего этого не происходит.

ntp не так популярен, как когда-то, потому что спящие ноутбуки и настольные компьютеры, а виртуальные машины иногда не позволяют ему работать. Он предназначен для запуска время от времени по собственному расписанию на компьютере, который работает постоянно, и в реальном мире, где время непрерывно. Вероятно, поэтому он не установлен по умолчанию на современной рабочей станции. [Для Vmware см. this]

Вместо этого ntpdate запускается при запуске сетевого интерфейса. Когда спящий ноутбук пробуждается, он восстанавливает сетевое соединение, запускается ntpdate , и время снова правильное. Если аппаратные часы машины достаточно точны, и сеть довольно часто включается и выключается, этого, как правило, достаточно для большинства людей.

По какой-то причине stock ntpdate не всегда работает. В этом случае используйте вместо этого ntpdate-debian . Синтаксис для for.mer выглядит примерно так: ntpdate ntp.ubuntu.com , для последнего - ntpdate-debian

В отсутствие одной из этих вещей тогда ntp - лучший способ сохранить время.

Системы спроектированы так, чтобы каждый раз принимать прерывания по таймеру и обновлять свое представление о времени при каждом прерывании. Пока аппаратный таймер работает по спец. время не слишком дрейфует. Если аппаратный таймер не работает, время будет дрейфовать больше (все такие часы будут дрейфовать некоторые, по той же причине, по которой будут работать ваши наручные часы или часы с батарейным питанием. Часы, подключенные к стене, синхронизируются с временем по частоте и фазе, поддерживаемым ваша энергетическая компания).

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

Если бы вы запустили ntp в течение дня или двух, он бы сохранил информацию в /var/lib/ntp/ntp.drift, которая указала бы, на сколько нужно отрегулировать скорость, с которой ваш время операционной системы увеличивается с каждым прерыванием, чтобы согласовать частоту аппаратных часов с реальным временем, которое оно получает через Интернет. Сохранение файла таким же и просто запуск и остановка ntp через минуту после этого (при условии, что вы оставите файл /var/lib/ntp/ntp.drift без изменений) может многое исправить, если ntp наборов тактового смещения остается после окончания ntp . Я не уверен в этой детали.

Я подозреваю, что значение , которое ntp будет хранить в /var/lib/ntp/ntp.drift, сильно отличается от моего.

Однако, если эта машина постоянно работает, лучше всего установить ntp и позволить ей делать свое дело. Посмотрите другие ответы для получения подробной информации о том, как правильно определить время до его начала. Я запускаю ntp на своем рабочем столе и ntpdate на своем ноутбуке.

Интересная возможная альтернатива adjtimex упоминается в в этом ответе nealmcb.

Если ваша система не работает постоянно, запуск ntpdate во время загрузки кажется хорошим вариантом.

Предупреждение Некоторые программы могут выходить из строя, если время компьютеров уходит в прошлое. Запуск ntpdate после загрузки может привести к этому.

Одна проблема, это может быть проблемой: насколько я помню, ntp ожидает, что время не будет слишком далеко. Если это так, пытаясь действовать консервативно, ntp вообще не будет корректировать время. Если вы находитесь в такой ситуации, то имеет смысл выполнить оба действия: запустить ntpdate при загрузке, чтобы инициализировать правильное время, и затем запустить ntp , чтобы поддерживать его работу. обеспечить точное хронометраж. В частности, неисправная батарея материнской платы может вызвать эту ошибку, как и загрузка компьютера, который был выключен в течение долгого времени.

0
ответ дан 6 December 2013 в 20:27

Другие вопросы по тегам:

Похожие вопросы: