Reinicie automaticamente o serviço do Windows, se não estiver em execução


6

Eu tenho um serviço do windows em execução em um servidor Windows 2003. Na opção de propriedades, quando você clica com o botão direito do mouse no serviço, há uma opção para reiniciar o serviço se ele falhar. As opções disponíveis são para o primeiro, segundo e quaisquer falhas subsequentes.

Eu tentei usar essa opção para reiniciar o serviço quando não está em execução, mas parece que ele só reinicia o serviço se o serviço falhar como resultado de uma falha. O problema que eu tenho é que se houver uma falha, o serviço pega isso e desliga o serviço 'graciosamente'. Isso significa que não está sendo reiniciado.

Existe uma maneira eu posso reiniciar o serviço, independentemente de ter parado por causa de uma falha ou se parou de graça?

obrigado

Respostas:


9

Para um serviço mal comportado como esse, criaria um script pequeno que verifica se ele está em execução e o inicia, se não estiver. Então eu usaria tarefas agendadas para executar o script a cada 5 minutos ou mais.

Exemplo de script (verifica o serviço de spooler):

@echo off
Rem Look for the Print Spooler service in the list of started services
net start | find /i "Print Spooler"
Rem if not found, start it and a restart occurred.
if "%errorlevel%"=="1" (
   echo Service "Print Spooler" restarted at %time% on %date% by Script %0>>c:\ServiceRestart.Log
   net start "Print Spooler"
)

1

Que serviço é esse? Eu tive um problema estranho com o serviço MS Fax uma vez. Eu resolvi isso verificando processos no Gerenciador de Tarefas, terminando o processo se ele estiver listado, abrindo um Prompt de Comando e digitando:

net start faxsvc.exe

Você pode usar net stop faxsvc.exe para terminar o serviço também.

Outra coisa é verificar as dependências e reiniciá-las também, ou seja, aquelas de que o serviço de fax depende.

EDITAR : Eu acho que isso pode ajudar, mas eu não li sua pergunta muito bem. Eu sei que há um programa chamado Service Hawk disponível, mas custa dinheiro. Outra ideia seria combinar um arquivo em lote que reiniciará o serviço a cada xx segundos / minutos / horas / no entanto longa a duração entre o serviço em execução e a falha é.


É uma aplicação que nos escrevemos. Não é um dos serviços que vêm com o windows. O problema é que, quando o programa detecta uma falha, ele é desligado, mas não é encerrado com uma falha. Eu estou supondo que é suposto retornar um sinalizador de erro quando ele desliga, mas provavelmente não.
ziggy

0

Aqui está a resposta!

Usando o seguinte comando do Powershell pode verificar & amp; iniciar o serviço necessário

$A = get-service AdobeARMservice 
if ($A.Status -eq "Stopped") {$A.start()} elseIf ($A.status -eq "Running") {Write-Host -ForegroundColor Yellow $A.name "is running"}   
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.