У нас есть сервер, на котором регулярно возникают проблемы с уходом часов. Это Windows Server 2012, работающий в качестве гостя на хосте HyperV.
У меня сложилось впечатление, что эта запланированная задача должна периодически вызывать повторную синхронизацию:
\Microsoft\Windows\Time Synchronization\SynchronizeTime
Что меня смущает, так это то, что когда я смотрю на конфигурацию этой задачи в Планировщике заданий, в разделе «Триггеры» нет ничего. Столбец Время следующего запуска пуст, однако столбец Время последнего запуска показывает «16/5/2014 3:24:48 утра».
Я знаю, что это было около 5 дней назад, но я не знаю, что его вызвало. Как это контролируется?
Причина, по которой я хочу это понять, заключается в том, что я подумал, что мне может потребоваться настроить частоту этой задачи на что-то вроде ежедневной, чтобы бороться с дрейфом часов.
Я пока не хочу вдаваться в дискуссию о том, как лучше всего синхронизировать часы сервера - прямо сейчас я специально спрашиваю о поведении этой запланированной задачи.
Поскольку вы прямо попросили нас не Чтобы дать вам совет о том, как синхронизировать время на машине с Windows, я постараюсь этого не делать.
Запланированные задачи, которые вы видите в папке Microsoft, обычно были созданы Microsoft для работы с различными компонентами операционной системы Windows, и это не так. обычно хорошая идея поиграть с ними.
Указанная вами запланированная задача, как видите, просто не имеет триггеров. Запланированная задача может быть создана без триггеров, если вы только намереваетесь выполнить ее вручную (или вызвать ее для запуска из другой программы). Большинство этих запланированных задач, которые вы видите, были добавлены Microsoft в ОС, и у которых нет триггеров, совпадают с их добавлением триггеров службы Windows в операционную систему в Windows 7 и 2008 R2. Если вы посмотрите на действие этой запланированной задачи, то увидите следующее:
%windir%\system32\sc.exe start w32time task_started
Обратите внимание, что запланированная задача передает аргумент командной строки службе w32time, task_started, чтобы программа знала, что она была запущена из запланированной задачи, в отличие от запуска другими способами, такими как кто-то запускает службу с помощью передать через services.msc. Это позволяет программе действовать по-другому в зависимости от как это было начато.
Если вы посмотрите на триггеры службы для w32time:
C:\Windows\system32>sc qtriggerinfo w32time
[SC] QueryServiceConfig2 SUCCESS
SERVICE_NAME: w32time
START SERVICE
DOMAIN JOINED STATUS : 1ce20aba-9851-4421-9430-1ddeb766e809 [DOMAIN JOINED]
STOP SERVICE
DOMAIN JOINED STATUS : ddaf516e-58c2-4866-9574-c3b615d42ea1 [NOT DOMAIN JOINED]
Значит ли это, что служба времени Windows только запускается при изменении статуса домена Active Directory машины? Конечно нет. Это будет означать, что миллионы автономных компьютеров в домах людей по всему миру, которые никогда не присоединятся к домену, не будут иметь возможности синхронизации времени, а это, очевидно, не так. Windows автоматически пробуждает службу времени и все время синхронизирует себя ... при запуске, в 1:00 по воскресеньям, есть несколько случаев.
Служба времени Windows теперь запускается по триггеру и не работает постоянно в фоновом режиме. Идея состоит в том, чтобы сэкономить потраченные впустую циклы ЦП и заряд батареи при работе фоновых служб, которые не должны работать круглосуточно. Но уловка 22 в том, что вы не можете повторно синхронизировать время, если не запущена служба w32time. Итак, как бы вы автоматически запустили службу, синхронизировали время, а затем снова выключили?
Я бы настроил запланированную задачу и вызвал ее из другого места в ОС.