Configure acciones de recuperación para que tengan lugar cuando un servicio falle

10

He instalado muchos de nuestros servicios personalizados escritos en cuadros de Windows (no importa si XP, Server, Vista). Siempre configuro para "Reiniciar el servicio" en fallas 1ra, 2da y posteriores. Pero nunca he visto este trabajo; el servicio simplemente se detiene (debido a un error o algo en el código) pero no se reinicia.

Acabo de notar la casilla de verificación "Habilitar acciones para paradas con errores". ¿Tiene que verificarse esto para que la recuperación surta efecto si la falla fue causada por un error?

gracias Mark.

M Schenkel
fuente

Respuestas:

3

Si sus servicios se están deteniendo debido a un error, que está registrado por Windows, entonces sí, debe marcar 'Habilitar acciones para detenerse con errores', de lo contrario no funcionará.

Si no está marcado, solo reiniciará los servicios que se hayan detenido por razones legítimas o desconocidas.

Sam Cogan
fuente
1
Gracias, me di cuenta de eso. Pero hubiera pensado que "Error" sería lo mismo que un "fallo", y por lo tanto el servicio debería haber comenzado sin marcar la casilla.
M Schenkel
Parece un poco extraño, estoy de acuerdo, ya que la mayoría de las razones por las que un servicio podría fallar pensarías que sería un error.
Sam Cogan
2
No se debe activar ninguna acción de recuperación en los servicios que se han detenido por razones "legítimas". Esta respuesta todavía confunde los términos "detener" y "falla".
matpop
3
Cualquiera en Microsoft que haya escrito este lenguaje debe ser azotado sin cesar por su incompetencia.
Brain2000
16

La casilla de verificación "Habilitar acciones para paradas con errores" se introdujo con Windows Vista y Windows Server 2008, proporcionando una única línea de documentación embarazosa :

Seleccione Habilitar acciones para paradas con errores para activar las acciones de recuperación que el servicio detuvo con un error.

El SC.exe programa también se ha actualizado para proporcionar un nuevo comando: failureflag. La documentación muestra un mal ejemplo y realmente no se aplica a Windows Server 2003, pero nos dice que el comando:

Especifica si las acciones de recuperación se activarán cuando un servicio se detenga como resultado de un error.

Por lo tanto, la casilla de verificación y sc failureflagse utilizan para establecer la misma bandera.
Escribamos sc failureflagel símbolo del sistema, finalmente obtenemos una descripción bastante decente:

Cambia la configuración del indicador de acciones de error de un servicio. Si esta configuración es 0 (predeterminada), el Administrador de control de servicios (SCM) habilita las acciones de falla configuradas en el servicio solo si el proceso de servicio finaliza con el servicio en un estado que no sea SERVICE_STOPPED. Si esta configuración es 1, el SCM habilita acciones de falla configuradas en el servicio si el servicio ingresa al estado SERVICE_STOPPED con un código de salida Win32 distinto de 0 además de la finalización del proceso del servicio como se indicó anteriormente. Esta configuración se ignora si el servicio no tiene ninguna acción de falla configurada.

Una descripción similar se puede encontrar aquí .
Entonces, la respuesta correcta a la pregunta original es: las acciones de recuperación configuradas siempre surten efecto cuando su servicio no termina en el estado SERVICE_STOPPED. "Habilitar acciones para paradas con errores" debe verificarse si necesita habilitar las acciones de recuperación también cuando su servicio ingresa al estado SERVICE_STOPPED, siempre que el código de salida no sea 0 (error).

matpop
fuente
2
Felicitaciones por una respuesta muy útil!
Tim Lovell-Smith