nssm を使用して Windows PC をオートメーション サーバーに変えました
<本文>
Non-Sucking Service Manager は、プログラムとカスタム スクリプトをサービスとしてインストールし、バックグラウンドで永続的に実行できるようにするサービス ヘルパーです。最後の安定版リリースのタイムスタンプは 2014 年 8 月 31 日ですが、依然として専門能力開発とコンピューティングにおいて不可欠なツールであり続けています。
サービスのインストール以外にも使用されます。 NSSM は、サービスのシャットダウン、遅延、再起動、さらにはアンインストールすることもできます。また、サービス実行のすべての段階で構成の選択肢が提供され、サービスの起動時と終了時に何が起こるかを選択できるようになります。
以前の記事で NSSM を実際に使用したことがありましたが、当時は詳しく調べる時間がありませんでした。正直に言うと、2007 年にリリースされたツールが今日でも役立つとは思いませんでした。しかし、インターネットが教えてくれたことがあるとすれば、それは、昔ながらの Windows コマンドが今でも役に立つということです。
サービスとプロセス、どのような違いがあるのでしょうか?
Windows では、すべてのサービスがプロセスですが、すべてのプロセスがサービスであるわけではありません
しかし、なぜサービスとしてインストールするのでしょうか?また、サービスとプロセスはどう違うのでしょうか?最も単純な答えは、プロセスは Windows 内で実行されるプログラムのインスタンスであるということです。すべてのブラウザー セッション (タブを含む)、Steam、および Teams にはすべて、独自のプロセス (またはプロセス ツリーと呼ばれる複数のプロセス) があります。プロセスとサービスの最大の違いは、プロセスはユーザーと直接対話する場合と対話しない場合があるのに対し、サービスは厳密にバックグラウンドで実行されることです。また、Windows は、Windows サービス コントロール マネージャー (SCM) と呼ばれる専用システムを使用してサービスを管理します。これは、多くの場合、タスク マネージャーで複数のサービスを 1 つのプロセスにグループ化します。
Windows タスク スケジューラを使用してみてはいかがでしょうか?
プロセスをサービスとしてインストールすると稼働時間が向上します
NSSM がサービスを自動的に起動して実行するための単なる別の方法である場合、同じ機能を実行するように見える Windows タスク スケジューラを使用しないのはなぜでしょうか。これは、タスク スケジューラの機能は特定のイベントまたはスケジュールでタスクを実行しますが、サービスのような永続性がないためです。
タスク スケジューラとは異なり、NSSM は SCM と統合するサービスをインストールして、ログイン前とログアウト後にバックグラウンド サービスを継続的に実行し、クラッシュした場合は自動再起動します。サービスはすべてのユーザーに適用することもできますが、タスク スケジューラはログインが必要なため、ユーザーごとにのみ動作します。ただし、NSSM の最も強力な側面は、ユーザーがカスタム スクリプトやツールをサービスとしてインストールできる機能です。結論としては、プロセスを一度開始して継続的に実行する必要がある場合 (ローカル サーバーやファイル モニターなど)、サービスとしてインストールする方が良いということです。タスク スケジューラを 1 回だけ実行し、ユーザーごとに終了する必要がある場合は、タスク スケジューラの方が適しています。
セットアップはどのような感じですか?
思ったよりもずっと簡単です

NSSM はインストールする必要がありません。 Windows コマンド プロンプトにそのファイル パスに移動するか、そのファイル パスを入力するだけで、そのコマンドを呼び出すことができます (アカウント内でそのアクセスをグローバルにするために、環境変数として追加しました。これにより、どこからでも呼び出すことができます)。 Windows コマンド プロンプトを使用して完全に管理できますが、私は「nssm install」コマンドを使用して起動できるグラフィカル インターフェイスを使用することを好みます。インターフェイスがどんなに古風であっても、そのタブ、オプション、テキスト ボックスのおかげで、それほど難しく感じません。
クライアントを使用して Windows RustDesk サーバーをセットアップするとき、NSSM を使用して受信サーバーと送信サーバーをセットアップしました。 「service_auto_start」引数を設定すると、RustDeskサーバーは常にバックグラウンドで実行され、障害が発生した場合に自動再起動できます。
さらに、リモート サーバーに対しては、継続的に ping を送信し、一定数の ping に応答しない場合に警告を発するウォッチドッグ スクリプトを用意しています。スクリプトをサービスとしてインストールすると、PC を起動するたびにスクリプトを手動で実行する必要がなくなります。スクリプトはバックグラウンドで実行されるため、NSSM の「AppStdout」コマンドを使用してスクリプトの出力 (私の場合はタイムスタンプ) をログ ファイルにコピーしたり、「AppStderr」コマンドを使用してエラー メッセージをコピーしたりすることもできます。
数週間前に書いた記事では、タスク スケジューラを使用してクリーンアップとメンテナンスのタスクをスケジュールする方法について説明しました。この記事のコマンドとスクリプトはサービスに変えることができますが、これはタスク スケジューラの方が優れていると私が考える例です。これは、すべてのクリーンアップ操作が特定の時間トリガーで実行される頻度が低いためです。タスク スケジューラは実行して終了するように設計されているため、その点ではタスク スケジューラの方が適しています。ただし、フォルダーを監視し、その内容を継続的に削除する必要がある場合は、そのスクリプトをサービスとしてインストールすると間違いなく役立ちます。
セキュリティについての締めくくりの言葉
これをリスクウェアと呼ぶ人もいます
NSSM が役立つユースケースは他にもたくさんあります。個人的な自動化を超えて、自動化された Windows 導入から POS システムに至るまで、あらゆるものに広く使用されています。ただし、サービスをインストールする強力な機能は最大の弱点でもあり、仮想通貨マイナー、バックドア、その他のあまり面白くないペイロードなどのマルウェアを展開するために脅威アクターによって悪用されています。このため、一部のセキュリティ ベンダーは NSSM をリスクウェア、つまり悪用されやすい正規のソフトウェアとして分類しています。さらに、NSSM の修正バージョンは悪意のある目的で存在するため、公式ソースからのみダウンロードすることが重要です。
NSSM の新しい使用方法をまだ模索中です。このツールがあなたのワークフローの一部である場合は、コメントを残してください。あなたの提案をぜひ試してみたいと思います。
*️⃣ 出典リンク:
古代の Windows コマンド、 Windows Service Control Manager、RustDesk サーバー、クリーンアップおよびメンテナンス タスクのスケジュール、 セキュリティ ベンダー、