Tenho um serviço de software incômodo que falha a cada poucas semanas. Possui dois componentes. Serviço A e Serviço B. O Serviço B fica em um estado estranho e para de aceitar conexões do Serviço A. A única saída é reiniciar ambos os serviços manualmente ou reinicializar o servidor.
Gostaria de agendar uma reinicialização de serviço para A e B regularmente. Diga a cada 24 horas. Como lidar com isto?
Responder1
Seguindo as sugestões dos comentários, acabei criando um arquivo em lote contendo a sequência de reinicialização adequada com tempos limite. Os tempos limite foram necessários devido às dependências entre os serviços. Agendei-o para ser executado como administrador todas as noites às 4h usando o agendador de tarefas.
net stop "Service B"
net stop "Service A"
timeout /T 10
net start "Service B"
timeout /T 10
net start "Service A"
Não é o ideal, mas servirá neste cenário – uma implantação de desktop remoto com menos de 10 usuários.
Responder2
Em vez de criar um arquivo bat, que pode ficar corrompido ou ausente, você pode criar uma tarefa agendada commúltiploações. Uma ação para interromper o serviço e outra para reiniciá-lo. Ambos executados com o NET
comando. Dê a eles um argumento STOP e START, seguido do nome do serviço.
NET STOP "Service A"
NET START "Service A"
Aqui estáuma postagem no StackOverflow explicando como.
Responder3
Net Stop "ServiceName" && Net Start "ServiceName"
E você pode encadear && para Stop/Start ServiceB
Net Stop "ServiceA" && Net Start "ServiceA" && Net Stop "ServiceB" && Net Start "ServiceB"
Responder4
Você pode criar um arquivo bat e dentro dele tentar algo assim:
net stop {serviceName} e net start {serviceName}
e use o arquivo bat como um programa para uma tarefa agendada.