63 votos

¿Cómo puedo reiniciar automáticamente un servicio de Windows si se bloquea?

Tengo un servicio de Windows que sale inesperadamente cada pocos días. ¿Hay alguna forma sencilla de supervisarlo para asegurarse de que se reinicia rápidamente si se bloquea?

89voto

JCCyC Puntos 328

En la aplicación Servicios, seleccione las propiedades del servicio en cuestión.

Ver la pestaña de recuperación - hay todo tipo de opciones - yo pondría Primer y Segundo fallo para reiniciar el servicio, Tercero para ejecutar un programa por lotes que BLAT 's un correo electrónico con la tercera notificación de fracaso.

También debe establecer el recuento de fallos a 1 para restablecer el recuento de fallos diariamente.

EDITAR:

Parece que se puede hacer a través de una línea de comandos:

SC failure w3svc reset= 432000  actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"

Su archivo MyBatchFile.CMD puede tener este aspecto:

blat - -body "Service W3svc Failed" -subject "SERVICE ERROR" -to Notify@Example.com -server SMTP.Example.com -f Administrator@Example.com

4 votos

Todo el material es bueno, pero +1 especialmente por el consejo de la notificación por correo electrónico y el material de la línea de comandos.

1 votos

¿Dónde debería estar el archivo por lotes en el disco?

1 votos

En cualquier lugar. Con SC failure w3svc command= "MyBatchFile.cmd" debe estar en la ruta o C:\Windows\System32. Puedes ponerlo en cualquier directorio si utilizas una ruta completa, es decir SC failure w3svc command= "c:\Stuff\MyBatchFile.cmd"

10voto

jeremyasnyder Puntos 141

Abra Services.msc, haga doble clic en el servicio para abrir las Propiedades del servicio, hay una pestaña de Recuperación y esos ajustes deberían permitirle reiniciar el servicio en caso de fallo.

7voto

MSS Puntos 1

Intenta ajustar el tiempo de recuperación a cero:

enter image description here

El equivalente en la línea de comandos:

SC failure YOUR_SERVICE_NAME reset= 0 actions= restart/0/restart/0/restart/0

De todos modos, a veces la recuperación automática no funciona correctamente y se recomienda utilizar un software de terceros. Parece que cuando el servicio sale correctamente con el código de salida 0, Windows no intenta recuperarlo.

1voto

Estoy usando ServiceKeeper en mi servidor Windows 2008 en HostForLife.eu y funciona muy bien. Anteriormente, tuve una reseña sobre ServiceHawk, pero prefiero usar ServiceKeeper por su gestión e interfaz más fáciles.

1voto

Tak Puntos 128

Tenía un requisito similar para iniciar un servicio si se detenía. La solución más sencilla que pensé fue ejecutar el siguiente comando en el programador de tareas de Windows cada 5 minutos:

net start MiNombreDeServicio

Este comando básicamente iniciará el servicio (si está detenido) y no tiene ningún efecto si el servicio ya está funcionando.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: