Назад | Перейти на главную страницу

Настройте действия по восстановлению, которые будут выполняться в случае сбоя службы

Я установил многие из наших специально написанных сервисов на окнах (не имеет значения, XP, Server или Vista). Я всегда настраиваю «Перезапустить службу» при 1-м, 2-м и последующих сбоях. Но я никогда не видел этой работы; служба просто останавливается (из-за ошибки или чего-то в коде), но не перезапускается.

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

спасибо, Марк.

Флажок «Включить действия для остановок с ошибками» был введен в Windows Vista и Windows Server 2008, обеспечивая единственную неприятную строку документация:

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

В SC.exe Программа также была обновлена, чтобы предоставить новую команду: failureflag. В документация показывает плохой пример и действительно не относится к Windows Server 2003, но сообщает нам, что команда:

Указывает, будут ли запускаться действия по восстановлению, когда служба останавливается в результате ошибки.

Итак, флажок и sc failureflag используются для установки того же флага.
Давай набираем sc failureflag в командной строке мы наконец получаем вполне приличное описание:

Изменяет установку флага действий при сбое для службы. Если этот параметр равен 0 (по умолчанию), диспетчер управления службами (SCM) включает настроенные действия при сбое службы только в том случае, если процесс службы завершается с помощью службы в состоянии, отличном от SERVICE_STOPPED. Если этот параметр равен 1, SCM включает настроенные действия при сбое для службы, если служба входит в состояние SERVICE_STOPPED с кодом выхода Win32, отличным от 0, в дополнение к завершению процесса службы, как указано выше. Этот параметр игнорируется, если для службы не настроены действия при сбое.

Подобное описание можно найти Вот.
Итак, правильный ответ на исходный вопрос: настроенные действия по восстановлению всегда вступают в силу, когда ваша служба не завершает работу в состоянии SERVICE_STOPPED. Необходимо установить флажок «Разрешить действия для остановок с ошибками», если вам необходимо включить действия по восстановлению также, когда ваша служба переходит в состояние SERVICE_STOPPED, при условии, что код выхода равен не 0 (ошибка).

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

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