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

10

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

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

спасибо Марк

М Шенкель
источник

Ответы:

3

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

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

Сэм Коган
источник
1
Спасибо - я вроде понял это. Но я бы подумал, что «Ошибка» - это то же самое, что и «сбой», и, следовательно, служба должна была запускаться без установки флажка.
М Шенкель
Это кажется немного странным, я согласен, так как большинство причин, по которым служба перестает работать, вы считаете ошибкой.
Сэм Коган
2
Никакие действия по восстановлению никогда не должны запускаться на службах, которые были остановлены по «законным» причинам. Этот ответ по-прежнему путает термины «стоп» и «провал».
matpop
3
Кого бы ни в Microsoft, который написал этот язык, нужно бесконечно порвать за их некомпетентность.
Brain2000
16

Флажок «Включить действия для остановок с ошибками» был введен в 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 (ошибка).

matpop
источник
2
Слава за очень полезный ответ!
Тим Ловелл-Смит