Часы Ubuntu выключены примерно на полчаса:
Где я могу начать устранять неисправности?
Якобы он устанавливается "автоматически из Интернета". Как я могу проверить, что «Интернет» знает, который час?
Детали
У 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))
'
Ответы:
NTP хорошо держит ваш компьютер в нужное время и делает это, даже не запуская его задом наперед, что было бы плохо для некоторых программ, которые вы могли запускать.
Он не только устанавливает время, но и непрерывно регулирует, как ваш компьютер хранит время, так что его время не только точно в один момент времени, но и близко к реальному времени (в течение десятков миллисекунд, а не десятков минут) , Он регулирует как фазу (время), так и частоту (как быстро «тикают» часы). NTP никогда не заставляет часы бежать назад. Чтобы определить, как быстро тикают часы после перезагрузки, может потребоваться много времени, поэтому ntp отслеживает дрейф в файле /var/lib/ntp/ntp.drift. Так как вы не запускаете ntp, ничего этого не происходит.
NTP не так популярен, как когда-то, потому что спящие ноутбуки и рабочие столы, а виртуальные машины иногда не позволяют ему работать. Он предназначен для запуска время от времени по собственному расписанию на компьютере, который работает постоянно, и в реальном мире, где время непрерывно. Вероятно, поэтому он не установлен по умолчанию на современной рабочей станции. [Для Vmware, посмотрите это]
Вместо этого ntpdate запускается при включении сетевого интерфейса. Когда спящий ноутбук пробуждается, он восстанавливает сетевое соединение, ntpdate запускается, и время снова корректно. Если аппаратные часы машины достаточно точны, и сеть довольно часто включается и выключается, этого обычно достаточно для большинства людей.
По какой-то причине фондовый 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, чтобы он работал, чтобы обеспечить точное хронометраж. В частности, неисправная батарея материнской платы может вызвать эту ошибку, как и загрузка компьютера, который был выключен в течение длительного времени.
источник
man rtc
странице написано: «RTC не следует путать с системными часами, которые являются программными часами, поддерживаемыми ядром и используемыми для реализации gettimeofday (2) ...» Не знаю, связаны ли системные часы с часами FSB , Если посмотреть на конфигурацию ядра, в последнем точном ядре Ubuntu i386 системные часы обновляются с частотой 250 Гц. Спасибо за комментарий!- Обычно время синхронизируется только один раз при каждой загрузке или пробуждении от сна
Нет, сервер времени в Ubuntu работает правильно, и он автоматически устанавливает время с него.
Проблема заключается в том, что обычно это происходит только один раз при каждой загрузке (или, если быть более точным, при каждом запуске сетевого интерфейса - будь то выключение, спящий режим или режим гибернации). Исходя из вашего времени безотказной работы, можно с уверенностью сказать, что оно не было синхронизировано более недели. И ваши системные часы по какой-то причине работают немного быстро.
- Установите почасовую
cron
работу для синхронизации, если вы не часто перезагружаетесь, или ваш сервер / рабочий стол никогда не засыпаетЛучше всего настроить cron-задание, я бы сказал, ежечасно, если вы хотите сверхточное время. Самый простой способ сделать это:
sudo editor /etc/cron.hourly/ntpsync
Добавьте следующие строки:
sudo chmod +x /etc/cron.hourly/ntpsync
Вы можете вставить это
/etc/cron.daily
вместо этого, если хотите, один раз в день.источник
Это может произойти, если вы установили демон времени ntp, а время на вашем компьютере слишком далеко для быстрого исправления.
Чтобы исправить это, откройте терминал и сделайте
Что это делает:
Если у вас не установлен ntp, сделайте это с
Обновление: использование ntpdate в задании cron, как было рекомендовано здесь, приводит к незначительным проблемам.
Ntpdate заставит время «прыгать» каждый час или около того. Использование ntp позволяет избежать этой проблемы, потому что оно будет регулировать время, наклоняя часы. Кроме того, хотя выбор ntp-сервера в окрестности дает еще более высокую точность, в этом нет необходимости. Файл конфигурации ntp по умолчанию содержит несколько серверов, и сервер автоматически компенсирует любые задержки.
Итог: - используйте ntp - если далеко, выключите ntp, запустите ntpdate один раз и перезапустите ntp.
источник
/etc/init.d/ntp
не существует Это довольно свежая установка Ubuntu 12.04, и я специально не изменил ничего, связанного со временем.У меня была похожая проблема, и она была вызвана чем-то в брандмауэре. В конце я добавил почасовое задание cron, но добавил
-u
аргумент,ntpdate
чтобы заставить его использовать нестандартный порт.Моя проблема была вызвана тем, что Ubuntu на самом деле не проверяла,
ntpdate
работает ли она, а автоматически предполагала, что она будет работать.источник