Eu tenho um aplicativo de servidor que desejo executar sempre que o computador estiver em execução e, geralmente, esse é o caso, exceto às vezes, acho que ele foi fechado por si só.
Existe um bastão ou script que eu possa executar para monitorar o aplicativo e reiniciá-lo, caso seja fechado?
Respostas:
Isso nem sempre funciona (depende da forma como o programa se carrega), mas normalmente você pode criar um arquivo em lotes como este:
Eu usei o bloco de notas como um exemplo.
As linhas
são apenas um atraso (de 10 segundos) para dar ao usuário a chance de interromper o processo antes de iniciar novamente.
A linha
não é necessário, mas seria registrado cada vez que o programa era fechado em um arquivo, portanto, pode ser útil diagnosticar o problema. O ErrorLevel pode não lhe dizer muito, mas um programa deve retornar 0 se for fechado normalmente e não mensagem zero se isso não acontecer
Observe que você mencionou que seu programa não faz nada se já estiver em execução. Isso geralmente significa que o aplicativo inicia, detecta que outra cópia já está em execução e é encerrada imediatamente. Se for esse o caso, e seu programa estiver em execução antes de iniciar esse arquivo em lotes, o lote fará um loop e tentará iniciar o programa a cada dez segundos.
fonte
Com base nas suas respostas acima, o que eu sugiro é que você coloque esse comando em um arquivo em lotes e defina esse arquivo em lote para ser executado como uma tarefa agendada a cada minuto. Não há praticamente nenhuma sobrecarga associada a isso e garante que seu processo seja declarado, independentemente de você estar por perto para perceber que ele parou.
fonte
Eu acho que a resposta certa para esta pergunta depende de por que você deseja fazer isso. Você está tentando resolver o desligamento acidental? Evitar o desligamento "malicioso" ocasional dos usuários da máquina (por exemplo, funcionários que fecham o software de monitoramento)? Evitar ataques maliciosos sérios e qualificados? Você está tentando escrever malware (nesse caso, por favor ;-))?
Além disso, como outros comentaristas mencionaram, seria diferente se você tivesse escrito um serviço do Windows (por exemplo)
Pessoalmente, eu provavelmente começaria escrevendo um segundo aplicativo e iniciando da mesma maneira. Faça com que os dois aplicativos procurem um ao outro periodicamente e reinicie, se necessário - verifique se você fornece uma maneira fácil para que o aplicativo seja legitimamente fechado!
Dito isto, e dado o seu comentário "às vezes eu acho que ele fechou por si só" Eu realmente começaria tentando descobrir por que ele está fechado ...
fonte
Você pode usar um programa chamado ReStartMe 2.0 [ Mirror ] faz exatamente isso:
Monitora os processos e os reinicia se eles fecharem.
fonte
assim é bem melhor! este é um código que eu tenho usado para um servidor de jogo minetest deve ser salvo em um arquivo .bat
fonte