o que o serviço STOP faz no Windows?

3

Eu inicio meu servidor da web como serviço da web no Windows XP. Como foi feito é descrito aqui

Meu servidor web está codificado em ruby / sinatra e eu inicio C:\Ruby187\bin\ruby c:\web\web2.rb . Isso codifica o serviço também. Manualmente eu paro o servidor web pressionando CTRL + C na janela dos se iniciado a partir da linha de comando.

Admito que meu código ruby não é 'software especialmente escrito' para ser um serviço. Mas eu gostaria de saber se posso desligá-lo de alguma forma quando clico no botão parar para este serviço.

Como posso parar o servidor agora quando ele começou por meio do serviço? Eu descobri que posso pará-lo via taskkill /f /t /im ruby.exe

Existe alguma maneira de usar a função de serviço de parada do MMC para parar o servidor da Web?

Eu chamo o servidor web diretamente como mostrado na imagem clique aqui para ler o texto na foto.

    
por Radek 24.06.2011 / 07:15

1 resposta

4

O botão Stop envia um controle "Stop service" para o programa principal do serviço - neste caso, é srvany . O resto depende desse programa. E parece que srvany simplesmente ignorará o controle .

Parece que a versão do srvany para o Windows NT 4.0 faz matar seus filhos imediatos - você pode obtê-lo da Microsoft .

É possível escrever um serviço do Windows real que pare muito bem seu programa Ruby - por exemplo, usando win32serviceutil do Python. (Não parece haver nenhum módulo Ruby para fazer interface com o Windows, infelizmente.)

Da linha de comando ou scripts em lote, isso fará o mesmo que o botão Parar:

  • sc stop <name>

  • net stop <name>

Programaticamente, você precisa ligar para OpenSCManager(...) , OpenService(...) , então ControlService(..., SERVICE_CONTROL_STOP) .

    
por 24.06.2011 / 09:59