Я пытаюсь использовать NTPD для обновления времени моего компьютера с Linux на указанный NTP-сервер.
Вот сценарий:
Каждый раз, когда машина Linux запускается, я хочу обновить время с NTP-сервера, и если это не удастся, я хочу повторить попытку каждые 5 минут до успешного завершения (макс. 2 часа).
Я искал вокруг и обнаружил, что я должен (?) Использовать NTPD и использовать некоторые команды, такие как:
#ntpdate ntp.server.com
(до запуска NTPD)
#ntpd some_options_to_start
Вопросы:
- Как я могу узнать, было ли время успешно обновлено этими командами?
- Могу ли я установить интервал обновления времени с ntpd? (или я должен использовать что-то вроде
sleep
и цикл сdo
..while
/for
в оболочке?)
Обратите внимание, что я хочу выполнить вышеупомянутые команды в сценарии оболочки и поместит оболочку на веб-сервер. Затем клиенты (с браузером веб-браузера) выполнят скрипт на сайте. Поэтому мне нужно проверить, было ли обновление успешным или нет, чтобы отправить результат клиенту (через Интернет).
Используйте ntpstat.
источник
ntpq -p
показывал одноранговых узлов. Так что я не доверяю этой утилите.Чтобы ответить на первый вопрос,
ntpdate
обычно рассказывается, что он сделал, а может, и не сделал.Демон NTP
ntpd
, работает постоянно и время от времени запрашивает у серверов NTP (обычно настроенных в/etc/ntp.conf
) время. Вам не нужно запускать скрипт каждые 5 минут.ntpdate
должен привести машину в режим почти синхронизации с сервером, и онntpd
будет работать в фоновом режиме и поддерживать его синхронизацию. Вы не устанавливаете интервал, который пытается использовать ntpd, он регулирует интервал на основе того, как он воспринимает смещение локальных часов от серверов, и качества соединений с серверами.Вы можете использовать программу с именем,
ntpdc
чтобы увидеть, чтоntpd
хранится в качестве информации:Я думаю, что число, которое вас обычно интересует, это «смещение», то есть количество секунд, в течение которых ваши локальные часы отключены от часов сервера.
В качестве
man
страницыntpdc
состояний для команды "peers":Итак, ясно, что «смещение» в секундах.
Похоже, что
ntpdc
устарела, заменена наntpq
.ntpq
имеет интерактивную команду "peers", которая дает "смещение" в миллисекундах. Мой Redhat сервер имеет и тоntpdc
и другоеntpq
, так что вам нужно быть осторожным.источник
ntp-wait
был сделан для этой проблемы.Пять минут с,
man ntp-wait
и вы должны быть в рабочем состоянии ...источник
Я добавил в сценарий @BillTHor bash также проверку кода завершения ntpdstat> 0:
[ОБНОВЛЕНИЕ], так как скрипт, использующий вывод ntpq, был бесполезен для смещения larget (более 4 цифр смещения), я пробовал новую версию, используя только ntpstat:
источник
Смещение NTP можно получить с помощью следующего конвейера UNIX:
Число пиров NTP можно получить с помощью следующего конвейера UNIX:
Для NTP offet мы используем:
Для подсчета пиров NTP мы используем:
Zabbix-готовый NTP-мониторинг (источник: Joyent):
Подключаемые модули мониторинга NTP для Nagios:
check_ntp_offset:
check_ntp_peers:
Я действительно должен позволить настраивать предупреждения и критические пороговые значения в сценариях Nagios с помощью -w и -c. Они не совсем готовы к плагину без этого. Дальнейшее руководство по этому вопросу в учебном руководстве здесь: http://www.kernel-panic.it/openbsd/nagios/nagios6.html
источник
Считается, что Chrony обрабатывает ваш вариант использования лучше, чем NTPd (сеть и машина вкл / выкл, приостановка и т. Д.). Видеть
http://fedoraproject.org/wiki/Features/ChronyDefaultNTP
RE, почему я считаю, что chronny хорош: он был предварительно установлен на моей машине Fedora, и у меня никогда не было с этим проблем (я использовал его уже много лет). У меня никогда не было проблем с ntpd и в прошлом, но если вы прочитаете ссылку, которую я предоставил, есть некоторая информация о том, почему chrony лучше не всегда на машинах. Вот почему я предложил опе попробовать, это может или не может работать лучше для него. Так что это просто еще один хороший вариант, прежде чем начинать слишком много настройки, оптимизации и взлома ntpd.
источник
источник
То же, что и в предыдущем ответе выше, но с небольшим изменением, так как предыдущая команда будет запускать оператор if для стольких смещений, т.е. если смещение равно 3, то оно будет печатать NTP в пределах 0,1 ... 3 раза до закрытия. Может быть раздражает, если у вас есть сервер, который находится далеко от синхронизации. Вероятно, есть способ удалить цикл for ...
источник