Tengo un servicio de Windows que se cierra inesperadamente cada pocos días. ¿Hay una manera simple de monitorearlo para asegurarse de que se reinicie rápidamente si falla?
windows
windows-service
Liam
fuente
fuente
SC failure w3svc command= "MyBatchFile.cmd"
esto debe estar en la ruta o C: \ Windows \ System32. Puede ponerlo en cualquier directorio si utiliza una ruta completa, es decirSC failure w3svc command= "c:\Stuff\MyBatchFile.cmd"
Abra Services.msc, haga doble clic en el servicio para abrir las Propiedades del servicio, hay una pestaña Recuperación y esa configuración debería permitirle reiniciar el servicio en caso de falla.
fuente
Intente establecer el tiempo de recuperación en cero:
La línea de comando equivalente:
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 software de terceros. Parece que cuando el servicio sale con gracia con el código de salida de 0 ventanas, no intente recuperarlo.
fuente
Estoy usando ServiceKeeper en mi servidor de Windows 2008 en HostForLife.eu y funciona muy bien. Anteriormente, tenía una revisión sobre ServiceHawk, pero prefiero usar ServiceKeeper para su administración e interfaz más fáciles.
fuente
Tenía un requisito similar para iniciar un servicio si se detenía. La solución más simple que pensé fue ejecutar el siguiente comando en el programador de tareas de Windows cada 5 minutos:
net start MyServiceName
Este comando básicamente iniciará el servicio (si está detenido) y no tendrá efecto si el servicio ya se está ejecutando.
fuente
Recientemente implementé una opción de recuperación para ejecutar un script de PowerShell que intenta reiniciar el servicio un número definido de veces y envía una notificación por correo electrónico al final, también.
Después de varios intentos (y a pesar de todas las otras cosas que he visto) La configuración de los campos en la pestaña de recuperación en los servicios es la siguiente:
Programa: Powershell.exe
** No C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe
Parámetros de línea de comando: -command "& {SomePath \ YourScript.ps1 '$ args [0]' '$ args [1]' '$ args [n]'}"
por ejemplo: -command "& {C: \ PowershellScripts \ ServicesRecovery.ps1 'Nombre del servicio'}"
** Los $ args son parámetros que se pasarán a tu script. Estos no son obligatorios.
Aquí está el script de PowerShell:
fuente
Esta fue mi respuesta en un hilo similar Espero que esto ayude ...
Puede programar un script vbs simple como este para reiniciar periódicamente el servicio en la computadora si es necesario.
fuente
Alguien hizo una pregunta similar en Super User: podría instalar una herramienta que supervise los servicios de Windows. Algo como Service Hawk lo ayudaría a mantener los servicios iniciados o le permitiría programar reinicios automáticos (posiblemente durante la noche) para mantener el servicio funcionando sin problemas.
fuente