Название в значительной степени объясняет это. Допустим, есть 100 серверов, различные версии Windows и Linux, и один сервер Windows является «главными часами». Я смотрел на этот вопрос:
Как мне синхронизировать часы между Linux и Windows?
Это намекает на то, что ntp может делать то, что я хочу, если я запускаю «ntpd -q» на клиенте (?). Если я устанавливаю ntp, мне также нужно гарантировать, что он только синхронизировать время, когда я его заставляю. Еще лучше, если у меня есть журнал, который сообщает мне каждый раз, когда выполнялась синхронизация.
Я выполняю тестовые прогоны, и мне нужно сказать что-то вроде этого: «Часы были синхронизированы на всех тестовых системах в 09:42:01 на главном компьютере. Затем был запущен тестовый прогон, и ему разрешили работать в течение шести часов. . Ни один из системных часов не был изменен в течение этого временного интервала ».
Я понимаю, что в дальнейшем будет дрейф часов, но сейчас мы делаем это так, и я делаю это вручную. Лучше бы хотя бы разовую синхронизацию автоматизировать.
Если бы вы просто использовали Linux, я бы использовал mcollective для параллельного выполнения команды ntpdate. У моего ntpd нет опции -q.
Я не знаком с подобными инструментами для Windows.
Чтобы быть ясным, у вас больше шансов получить постоянное время при непрерывной работе ntpd, поскольку он также предотвращает дрейф часов. Разные компьютеры имеют немного разные тактовые частоты, и простая синхронизация часов при запуске не гарантирует, что они будут синхронизироваться в течение следующих шести часов. ntpd разработан специально для исправления этого.
ntpd
предназначен для поддержания постоянной синхронизации, отсюда и буква «d». ntpdate
даст вам одноразовую синхронизацию.
Для Windows, я думаю, вы бы сделали что-то вроде этого ... (я не проверял, работает ли это правильно)
w32tm /config /manualpeerlist:"valid.ntp.server,0x9"
w32tm /resync /rediscover
w32tm /config /manualpeerlist:"bogus.invalid.server,0x9"
Почему бы просто не позволить устройствам постоянно синхронизироваться?
Вы ищете конкретную команду для запуска / остановки NTP в Linux и Windows? В разных дистрибутивах Linux они разные. Для некоторых это будет что-то вроде "/etc/init.d/ntpd stop", для других - другое, и я не уверен в Windows.
Есть два способа сделать это и одно предостережение.
Метод 1. Запустите NTP в обычном режиме, но остановите его для тестирования.
Метод 2: не запускайте NTP, а запускайте NTP в «одноразовом» режиме прямо перед запуском теста. (В Linux это будет «ntpdate SERVERNAME» в Unix / Linux или [я думаю] «ntp -q» в Windows)
Метод 1 имеет некоторые преимущества в том, что часы будут правильными все время, пока вы не выполняете тесты. Часы также будут более точно настроены для эталона. То есть NTP очень точно поддерживает синхронизацию даже между пакетами NTP. Пакеты NTP в сети просто настраиваются. Между пакетами NTP использует прошлый опыт, чтобы ускорить или замедлить системные часы. Недостатком является то, что при повторном запуске NTP он откажется запускаться, если часы будут слишком далеко. Это не ошибка, это сделано специально, чтобы предотвратить синхронизацию с сервером, который вышел из строя. Чтобы предотвратить это, выполните «ntpdate» или «ntp -q» прямо перед перезапуском NTP.
Метод 2 имеет то преимущество, что его проще реализовать. Однако часы будут не очень точными. В режиме «один выстрел» часы не так точно устанавливаются, как при использовании NTP. Это в основном для установки удаленных часов перед запуском NTP (см. Выше). Однако, если ваш тест должен быть точен только до 1/10 секунды, все будет в порядке.
Предостережение заключается в том, что тесты могут не измерять то, что, по вашему мнению, они тестируют, если вы отключите NTP. Часы компьютера будут дрейфовать без постоянной работы NTP. Это нормально, если вы измеряете, какой у компьютера дрейф, но не более того.
(И я должен отметить ... дрейф будет отличаться не только от марки к марке, но и от конкретной машины.)
HTH!
Синхронизация вручную может быть вашим единственным вариантом для Windows без дополнительного программного обеспечения. См. Эту статью:
http://technet.microsoft.com/en-us/library/cc773263%28WS.10%29.aspx
В качестве альтернативы эта страница выглядит многообещающей:
http://www.endruntechnologies.com/ntp-client.htm
Имейте в виду, что выполнение периодической / ручной синхронизации НЕ лучше, чем непрерывная. Регистрация изменений времени из-за дрейфа часов в течение продолжительного времени без синхронизации не даст вам высочайшего уровня точности. Часы не обязательно дрейфуют с постоянной скоростью; он может меняться в зависимости от температуры и других колебаний, которые вы не можете измерить.
Какой уровень точности являются ты ищешь? +/- 1 секунда, +/- 0,0001 секунда, ...?