STOPサービスはWindowsで何をしますか?


3

Windows XPでWebサーバーをWebサービスとして起動します。それがどのように行われたかはここに記述されています

私のWebサーバーはruby / sinatraでコーディングされており、起動しC:\Ruby187\bin\ruby c:\web\web2.rbます。それもサービスをコーディングします。コマンドラインから起動した場合、DOSウィンドウでCtrl + Cを押して、Webサーバーを手動で停止します。

私のルビーコードは、サービスとして「特別に書かれたソフトウェア」ではないことを認めます。しかし、このサービスの停止ボタンをクリックすると、どういうわけかシャットダウンできるかどうか知りたいです。

サーバーがサービス経由で起動したときに、サーバーを停止するにはどうすればよいですか?経由して停止できることがわかりましたtaskkill /f /t /im ruby.exe

MMCサービス停止機能を使用してWebサーバーを停止する方法はありますか?


写真のテキストを読むには、写真のようにWebサーバーを直接呼び出します。ここをクリックしてください。

ここに画像の説明を入力してください


1
Rubyサーバーを起動するバッチファイルは何ですか?Taskkillは、まさにそれを行うため、最良の方法ではない可能性があります。タスクを強制終了し、実際には完全にシャットダウンしません。開始方法を確認できれば、停止方法を説明できるかもしれません。私は朝にそれを見る必要があります...ここで非常に遅い。
KCotreau

Windows サービスのようには見えませんが、これらはサービスとして特別に作成されたアプリケーションです(サービスとしてインストールされ、特定のAPIを使用してサービスコントロールマネージャー(SCM)と通信します)。何かがサービスMMCスナップインに表示され、スナップインが使用するAPI(sc.exeコマンドラインツールなど)で制御できます。
リチャード

1
@Richard:Windowsにとってそれサービスです-srvanyがSCM通信を処理します。
-grawity

回答:


4

このStopボタンは、「サービスの停止」コントロールをサービスのメインプログラム(この場合はsrvany)に送信します。残りはそのプログラム次第です。そして、と思われるSRVANYは単に制御を無視します

バージョンのようだSRVANYのWindows NT 4.0用はないその直接の子を殺す-あなたはそれを得ることができ、マイクロソフトから

Rubyプログラムを適切に停止する実際の Windowsサービスを作成することができますwin32serviceutil。たとえば、Pythonを使用します。(残念ながら、WindowsとのインターフェースをとるRubyモジュールはないようです。)


コマンドラインまたはバッチスクリプトから、これは[停止]ボタンと同じことを行います。

  • sc stop <name>

  • net stop <name>

プログラムで、あなたが呼び出す必要がありOpenSCManager(...)OpenService(...)その後、ControlService(..., SERVICE_CONTROL_STOP)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.