Как я могу синхронизировать часы компьютера при запуске? - PullRequest
8 голосов
/ 09 января 2009

У меня есть несколько серверов, размещенных на GoGrid, и каждый раз, когда я перезагружаю один из моих облачных серверов, системные часы неверны. Сервер не является членом домена, поэтому я просто настроил ОС для синхронизации с сервером времени в Интернете. Это происходит только один раз в день, и я не вижу возможности сделать это автоматически после перезагрузки. Поэтому мне осталось написать код, чтобы сделать это для меня.

Я создал пакетный файл с помощью команды "w32tm / resync" и запланировал его запуск при запуске системы, но он не работает, поскольку сетевое соединение недоступно при запуске пакетного файла. Как заставить синхронизацию времени начинаться после полной загрузки ОС и доступности сетевого подключения? Мне нужно время, чтобы быть корректным как можно скорее после загрузки компьютера, чтобы временные метки в моей базе данных были правильными.

Ответы [ 7 ]

14 голосов
/ 09 января 2009

В Windows 2008 в планировщике заданий есть опция, которая позволит вам подождать, пока сетевое соединение станет доступным, прежде чем запускать задание. В диалоговом окне свойств задачи создайте новый триггер «При запуске» и обязательно установите флажок «Включено». Добавьте действие для запуска вашего командного файла. Наконец, добавьте Условие, чтобы запустить задачу, только если доступно сетевое соединение. Затем я попросил его перезапустить команду до 3 раз, если она не удалась. Кажется, это прекрасно работает.

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

REM *** Retry for up to 15 minutes (90 retries @ 10 seconds each)
set retryCount=0

:SyncStart
if %retryCount == 90 goto SyncEnd
set /A retryCount=retryCount + 1

REM *** Resync the system clock
w32tm /resync
if errorlevel 1 goto SyncDelay
if errorlevel 0 goto SyncEnd

:SyncDelay
REM *** If unsuccessful, delay 10 seconds, then retry
choice /n /t:y,10>nul
goto SyncStart

:SyncEnd
6 голосов
/ 09 января 2009

Обычно служба времени Windows должна позаботиться об этом за вас.

http://technet.microsoft.com/en-us/library/cc773013.aspx

Работает ли у вас служба?

2 голосов
/ 12 марта 2019

В Windows 10 я пошел в службы и включил службу «Windows Time» w32time, чтобы она была автоматической, что решило ее для меня.

Моя проблема возникла из-за двойной загрузки с Linux, и по какой-то причине часы Windows всегда выключаются после загрузки в Linux.

1 голос
/ 04 мая 2017

Откройте терминал (от имени администратора) и выполните команду:

Используйте это на своем домашнем компьютере или не присоединитесь к домену
w32tm /resync

Используйте это, если вы присоединились к домену
net time /domain

Если вы получаете Служба не была запущена. (0x80070426), значит, вам нужно запустить службу времени Windows, подождать минуту и ​​повторить попытку.

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

Windows 10: синхронизация часов с сервером времени в Интернете в Windows 10

1 голос
/ 09 января 2009

запланированное задание, которое запускается при входе в систему, может быть?

РЕДАКТИРОВАТЬ: вы можете захотеть удерживать в скрипте 30 секунд или около того, чтобы разрешить обновление сетевых подключений. Совершенно не правильно прочитал ваш вопрос.

0 голосов
/ 09 апреля 2019

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

choice /n /t:10 /D:y

Как и вышеупомянутый пользователь, у меня тоже есть двойная загрузка между Ubuntu 18.04 и Windows 7, где загрузка с Ubuntu устанавливает системные часы на UTC, а ОС настраивается на GMT, тогда как, похоже, Windozz устанавливает системные часы на время зона.

Настройка на планировщик задач была достаточно простой, моя единственная конкретная проблема заключается в том, что у меня есть время, когда мой ноутбук подключается к FritzBox, поэтому я думаю, что мои обновления будут происходить только когда я дома. (Достаточно просто переключить NTP обратно на одну из предустановок, так что я не обеспокоен)

0 голосов
/ 09 марта 2016

Нашел это почти случайно. Новый синтаксис choice.exe для Win 7+ для вставки 10-секундной паузы

choice /N /T 10 /D y>nul
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...