Windowsサービスラッパーnssmの完全ガイド

概要と基本概念

nssmはWindows向けのサービスラッパーであり、通常の実行可能ファイルをシステムサービスとして登録するためのツールです。このツールを使用することで、任意のアプリケーションを起動時に自動実行されるサービスとして構成できます。類似のツールにはMicrosoft製のsrvanyがありますが、nssmの方が操作性に優れ、機能も豊富です。

主な特徴:

  • コンソールアプリケーションやGUIアプリケーションをサービス化可能
  • シンプルなインストール手順と容易な設定変更
  • 監視機能によりプロセスが異常終了した際に自動再起動

公式サイト:https://nssm.cc/

セットアップと基本操作

ダウンロードと準備

公式サイト https://nssm.cc/download から最新版を取得します。

システムアーキテクチャに応じて適切なバージョン(32bitまたは64bit)を選択して展開します。

サービス登録プロセス

管理者権限でコマンドプロンプトを開き、nssm.exeが存在するディレクトリに移動します。

以下のコマンドを実行して設定インターフェースを起動します:

nssm install

主要設定項目

  • 実行パス:対象となる実行ファイルの完全パス
  • 作業ディレクトリ:アプリケーションの実行コンテキストディレクトリ
  • 引数:実行時のパラメータ
  • サービス名:Windowsサービスマネージャーに表示される識別子

設定完了後、「Install Service」ボタンをクリックしてサービス登録を完了します。

基本操作コマンド

nssm install [service_name]     # サービス作成と設定画面表示
nssm start [service_name]       # サービス開始
nssm stop [service_name]        # サービス停止
nssm restart [service_name]     # サービス再起動
nssm remove [service_name]      # サービス削除
nssm edit [service_name]        # 設定編集画面表示
nssm set [service_name] [parameter] [value]  # パラメータ設定
sc delete [service_name]        # Windows標準のサービス削除コマンド

実践例:Webアプリケーションをサービス化

対象アプリケーション

.NET 6ベースのWebアプリケーションをサービスとして登録するケースを説明します。

通常の起動コマンド:

dotnet MyWebApp.dll --urls=http://*:9999/ --port=9999

サービス登録手順

以下の情報を設定します:

実行パス:C:\Program Files\dotnet\dotnet.exe
作業ディレクトリ:D:\Projects\MyWebApp\bin\Release\net6.0
引数:MyWebApp.dll --urls=http://*:9999/ --port=9999
サービス名:mywebapp9999

サービス管理操作

起動操作
D:\tools\nssm\win64>nssm start mywebapp9999
mywebapp9999: START: 処理が正常に完了しました。
停止操作
D:\tools\nssm\win64>nssm stop mywebapp9999
mywebapp9999: STOP: 処理が正常に完了しました。
再起動操作

サービスの状態に関わらず再起動を実行します:

D:\tools\nssm\win64>nssm restart mywebapp9999
mywebapp9999: STOP: サービスは開始されていません。
mywebapp9999: START: 処理が正常に完了しました。

D:\tools\nssm\win64>nssm restart mywebapp9999
mywebapp9999: STOP: 処理が正常に完了しました。
mywebapp9999: START: 処理が正常に完了しました。
設定変更

サービス名以外のパラメータを編集する場合:

D:\tools\nssm\win64>nssm edit mywebapp9999
サービス削除

確認プロンプト付きでサービスを完全に削除します:

D:\tools\nssm\win64>nssm remove mywebapp9999
Service "mywebapp9999" removed successfully!

タグ: nssm windows-service service-wrapper DotNet system-administration

7月9日 21:59 投稿