Estou procurando uma maneira robusta de determinar se um serviço pode ser interrompido ou morto

4

Estou procurando uma maneira robusta de determinar se um serviço pode ser interrompido sem perda ou corrupção de dados ou se uma parada regular funcionará se o serviço puder ser eliminado por meio do powershell.

Eu pensei em ver as alças do arquivo para o serviço para ver se o serviço está escrevendo ou lendo algo do diretório de trabalho. Existe algo mais que eu posso consultar via powershell para ver se o serviço ainda está processando dados.

    
por Marcel Janus 27.09.2012 / 11:22

1 resposta

2

A maneira mais "robusta" de determinar se um serviço pode ser interrompido ou eliminado é analisar seu código-fonte para ver se ele lida com um evento de desligamento ou parada corretamente.

Em seguida, o melhor é anexar a ele com um depurador e definir pontos de interrupção em eventos importantes.

Você não nos diz o que este serviço faz ou como funciona, mas se você quiser ver qual arquivo manipula o processo foi aberto durante a operação normal, na minha opinião o Process Explorer da Sysinternals é a maneira mais fácil de fazê-lo. Você também pode ver a atividade do sistema de arquivos ocorrendo em tempo real com o Process Monitor, filtrando os resultados para o processo que você deseja ver.

Se o serviço foi escrito corretamente, ele anulará todos os seus recursos de uma forma graciosa antes que o processo saia (quando encerrado através do gerenciador de serviços) ou pelo menos aqueles que levariam à perda de dados se não foram.

sc query your-service dará a você o que o Service Manager considera que o serviço é capaz, mas, novamente, é como o serviço foi escrito para determinar se a funcionalidade foi implementada corretamente ou não.

Editar: que seu serviço trava quando você tenta pará-lo me diz que não foi escrito corretamente.

Edit: Ah, e uma última coisa, se você quiser fazer algo com esse script, o handle.exe é um programa de linha de comando para monitorar handles. Você poderia analisar sua saída. Todos esses utilitários da Sysinternals estão no compartilhamento WebDAV \ live.sysinternals.com \ Tools \

    
por 05.01.2013 / 18:49