Во время процесса начальной загрузки сервера я хочу явно запустить ntpdate
вместо того, чтобы полагаться на ntp
демон. Однако в этот момент часы могут быть сильно искажены, что вызывает ошибку при выполнении sudo ntpdate address.of.ntp.server
. Я заметил, что после выполнения этой команды несколько раз, она в конечном итоге работает, возможно, из-за того, что несколько образцов накапливаются с одной и той же датой, однако я не могу найти эту спецификацию. Я хочу просто взять один образец, заставить ntpdate
принять ответ, а затем запустить ntp через sudo service ntp start
. Как я могу это сделать?
РЕДАКТИРОВАТЬ: я пробовал sudo ntpd -g -q
как было предложено, но я все равно получаю следующую ошибку в /var/log/syslog
:
Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: ntpd 4.2.6p5@1.2349-o Wed Oct 9 19:08:06 UTC 2013 (1)
Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: proto: precision = 0.115 usec
Sep 26 12:14:29 jd-0922-node1 kernel: [173176.189773] type=1400 audit(1411758869.717:48): apparmor="DENIED" operation="open" profile="/usr/sbin/ntpd" name="/usr/local/sbin/" pid=22239 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
Sep 26 12:14:29 jd-0922-node1 kernel: [173176.189779] type=1400 audit(1411758869.717:49): apparmor="DENIED" operation="open" profile="/usr/sbin/ntpd" name="/usr/local/bin/" pid=22239 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: ntp_io: estimated max descriptors: 1024, initial socket boundary: 16
Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: unable to bind to wildcard address 0.0.0.0 - another process may be running - EXITING
Похоже, ваши часы отстают больше, чем порог паники. Однако это не объясняет, почему несколько вызовов ntpdate могут исправить ситуацию. Честно говоря, я не могу придумать ни одной ошибки, которую можно было бы преодолеть несколькими вызовами ntpdate.
Несмотря на это, ntpdate устарел. Я думаю, что наиболее вероятное объяснение состоит в том, что ваши часы превышают порог паники. Вам нужно указать параметр -g для ntpd при его запуске. Отредактируйте `/ etc / default / ntp 'и убедитесь, что присутствует следующая строка:
NTPD_OPTS='-g'
документы для -g
:
-g Normally, ntpd exits with a message to the system log if
the offset exceeds the panic threshold, which is 1000 s by
default. This option allows the time to be set to any value
without restriction; however, this can happen only once. If the
threshold is exceeded after that, ntpd will exit with a message
to the sys‐ tem log. This option can be used with the -q and -x
options.
Было бы проще дать рекомендацию, если бы вы перечислили фактические сообщения об ошибках, полученные с помощью ntpdate. Есть ли шанс, что вы видели что-то о повороте вместо перекоса?
ОБНОВИТЬ:
Вы неправильно запускаете / останавливаете ntpd. Причина, по которой он не мог привязаться к адресу при использовании sudo, заключается в том, что ntpd уже был запущен. Я не предлагал вам использовать sudo ntpd -g -q
Если честно, я вообще никогда не упоминал -q, я понятия не имею, почему вы не хотите запускать ntpd постоянно. Использование однократной коррекции таймера и выход из игры - плохая идея. Я действительно думаю, что вам нужно понять, почему вы думаете, что этот одноразовый режим предпочтительнее непрерывной работы ntpd.
Без лишних слов:
/etc/default/ntp
и убедитесь, что у него есть NTPD_OPTS='-g'
sudo service ntp restart
Я говорю это со всем уважением и искренним желанием помочь вам: похоже, вы новичок в администрировании Linux в целом и совсем не знаком с ntpd. Поэтому я настоятельно рекомендую вам переосмыслить, почему вы хотите, чтобы ntpd только один раз устанавливал часы, а затем завершал работу. Это далеко от лучших практик. По моему опыту, если я когда-либо думаю, что мне нужно сделать что-то, противоречащее лучшим практикам, мне хотелось бы убедиться, что я уверен, что моя ситуация кардинально отличается от ситуации в остальном мире. После того, как вы правильно настроили ntpd, он дисциплинирует ваши часы, и вам никогда не придется об этом беспокоиться. Ваши часы будут медленно отклоняться от UTC, если вы сделаете один выстрел.