Script que iniciará um serviço toda vez que ele parar

1

A empresa em que trabalho tem um servidor que monitora o sistema de vigilância / câmera externa. O processo a seguir continua a morrer: PureActiv Video Processor.

Minha equipe precisa reiniciar o serviço manualmente usando o Gerenciamento do Computador.

Alguém pode me fornecer um script que verificará o serviço e reiniciará o serviço se ele não estiver em exibição.

Abaixo estão as informações necessárias:

Sistema: Windows Server 2003 Service Edition Service Pack 2 (compilação 3790) Serviço: PureActiv Video Processor Service Local: "C: \ Arquivos de programas \ PureTech Systems \ PureActivDAQServices \ Pure.PureLink.VideoProcessor.VideoProcessorService.exe"

Obrigado -jm

    
por Kamil Kisiel 15.08.2009 / 06:03

6 respostas

14

Se o serviço estiver sendo iniciado e finalizado incorretamente, você não precisará de um script para fazer isso.

  1. Abra o painel de controle Serviços
  2. Clique com o botão direito do mouse no serviço e obtenha propriedades
  3. Clique na guia Recuperação e edite as configurações

EDITAR:
Sim, e como todos já adicionaram, você deve estar verificando o que está acontecendo com o serviço. O Traveling Tech Guy faz um bom comentário sobre vazamentos de memória.

    
por 15.08.2009 / 06:08
7

Eu também verificaria o Visualizador de Eventos para ver porque o serviço falhava - poderia ser que uma pequena correção ou uma atualização de driver resolvesse o problema permanentemente.

Outro ponto: se o processo vazar memória e deixar a memória alocada para trás quando travar, reiniciá-lo repetidamente diminui a estabilidade do sistema operacional e aumenta a chance de todo o sistema ficar sem recursos antes.

Em suma, minha recomendação é lidar com o problema, não colocar um band-aid nele:)

    
por 15.08.2009 / 08:38
1

Veja se você ou alguém que você delegar pode executar periodicamente o Sysinternals Process Explorer na máquina e no serviço afetado depois de ter sido executado por um dia.

Em services.msc, obtenha as propriedades do serviço; o nome do executável deve ser encontrado lá. Isso é o que você irá monitorar no Process Explorer. No PE, clique com o botão direito do mouse no nome do executável e obtenha suas propriedades. Observe o uso de memória.

Após o serviço falhar, não o reinicie imediatamente. Execute o PE e inicie o serviço. Obtenha suas propriedades e observe seu uso de memória depois de estar funcionando por alguns minutos.

Você pode ter um caso para denunciar ao fornecedor com um driver com bugs.

As soluções alternativas listadas anteriormente incluem a reinicialização do serviço por meio da caixa de diálogo Serviço, a reinicialização do serviço por meio de um script agendado ou a reinicialização da máquina, digamos todos os dias ao meio-dia ou meia-noite ou sempre que algum tempo de inatividade puder ser tolerado.

    
por 16.08.2009 / 04:14
0

Você pode agendar um script vbs simples como este para reiniciar periodicamente o serviço no computador local somente se necessário.

strComputer = "." 
strSvcName = "PureActiv Video Processor" 
set objWMI = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
set objService = objWMI.Get("Win32_Service.Name='" & strSvcName & "'")
If objService.State= "Stopped" Then
    objService.StartService()
End If


Esta pergunta já foi feita, veja Como posso reiniciar automaticamente um serviço do Windows se ele falhar?

Espero que isso ajude.

    
por 15.08.2009 / 20:19
0

Este é um trabalho para uma ferramenta de monitoramento e integridade do sistema mais geral, como o ActivExperts Network Monitor ou algo mais caro (Operations Manager) ou mais código-fonte aberto (Nagios) et al ^^

    
por 15.08.2009 / 20:41
0

@ Oskar está monitorando até mesmo um único servidor - você pode até mesmo usar algo como o Service Hawk, que monitora os serviços do Windows sem ter que usar um conjunto de monitoramento tão grande.

    
por 26.10.2009 / 15:50