Eu tenho um serviço do Windows que sai inesperadamente a cada poucos dias. Existe uma maneira simples de monitorá-lo para garantir que seja reiniciado rapidamente se travar?
windows
windows-service
Liam
fonte
fonte
SC failure w3svc command= "MyBatchFile.cmd"
ele deve estar no caminho ou C: \ Windows \ System32. Você pode colocá-lo em qualquer diretório se você usar um caminho completo, ou seja,SC failure w3svc command= "c:\Stuff\MyBatchFile.cmd"
Abra Services.msc, clique duas vezes no serviço para abrir as Propriedades do serviço, há uma guia Recuperação e essas configurações devem permitir que você reinicie o serviço em caso de falha.
fonte
Tente definir o tempo de recuperação para zero:
O equivalente da linha de comando:
SC failure YOUR_SERVICE_NAME reset= 0 actions= restart/0/restart/0/restart/0
De qualquer forma, às vezes a recuperação automática não funciona corretamente e é recomendável usar software de terceiros. Parece que quando o serviço sai normalmente com o código de saída 0, o Windows não tenta recuperá-lo.
fonte
Estou usando o ServiceKeeper no meu servidor Windows 2008 em HostForLife.eu e funciona muito bem. Anteriormente, eu fiz uma revisão no ServiceHawk, mas prefiro usar o ServiceKeeper para facilitar o gerenciamento e a interface.
fonte
Eu tinha requisitos semelhantes para iniciar um serviço se interrompido. A solução mais simples que pensei foi executar o comando abaixo no Windows Task Scheduler a cada 5 minutos:
net start MyServiceName
Este comando basicamente iniciará o serviço (se parado) e não terá efeito se o serviço já estiver em execução.
fonte
Recentemente, implementei uma opção de recuperação para executar um script do PowerShell que tenta reiniciar o serviço um número definido de vezes e envia uma notificação por e-mail na conclusão.
Após várias tentativas (e apesar de todas as outras coisas que já vi), a configuração dos campos na guia de recuperação nos serviços é a seguinte:
Programa: Powershell.exe
** Não em C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe
Parâmetros da linha de comando: -comando "& {SomePath \ YourScript.ps1 '$ args [0]' '$ args [1]' '$ args [n]'}"
por exemplo: -comando "& {C: \ PowershellScripts \ ServicesRecovery.ps1 'Nome do Serviço'}"
** Os $ args são parâmetros que serão passados para o seu script. Estes não são necessários.
Aqui está o script do PowerShell:
fonte
Esta foi a minha resposta em um tópico semelhante Espero que isso ajude ...
Você pode agendar um script vbs simples como este para reiniciar periodicamente o serviço no computador, se necessário.
fonte
Alguém fez uma pergunta semelhante no Superusuário: Você pode instalar uma ferramenta que monitora os serviços do Windows. Algo como o Service Hawk ajudaria você a manter os serviços iniciados ou permitiria o agendamento de reinicializações automáticas (possivelmente durante a noite) para manter o serviço funcionando sem problemas.
fonte