システムサービスの「アクティブ(終了)」状態とはどういう意味ですか?

システムサービスの「アクティブ(終了)」状態とはどういう意味ですか?

私はデフォルトでthisismywebserverというWebサーバーを実行するカスタムサービスを使用しています。現在は機能していません(たとえば、ページにアクセスしようとすると「接続できません」というエラーが発生します)。

service thisismywebserver statusサービスの状態を確認するためにこのコマンドを実行すると、ステータスは「アクティブ(終了)」と表示されます。これはサービスが停止したことを意味しますか?そうでなければ、これはどういう意味ですか?

root@thisismywebserver-testing:~# service thisismywebserver status
● thisismywebserver.service - LSB: ThisIsMyWebServer server
   Loaded: loaded (/etc/init.d/thisismywebserver)
   Active: active (exited) since Sun 2015-11-08 23:01:33 EST; 18h ago

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

答え1

systemdを使用してシステムを実行しているようですが、sysVコマンドを使用しています。 sysV initスクリプトまたはsystemdユニットファイルを生成しましたか?

アクティブ(終了)状態は、systemdがコマンドを正常に実行したが監視するデーモンがあることを知らなかったことを意味します。

その場合は、開始するプロセスが基本プロセスであるか、サブプロセスを分岐するか、終了するかなどに応じて、TypeおよびExecStartオプションを適切に構成して、ユニットファイルでそれを定義する必要があります。

他のシステムマニュアルページを確認するか、質問を更新して、ユニットファイルまたは初期化スクリプトを公開してください。

答え2

私は同じ問題に直面しましたactive (exited)。根本的な原因は、start-stop-daemonコマンドを使用して一部のサービスデーモンプロセスを開始した後、私のシェルプロセスが終了したためです。

解決策は、シェルプロセスを直接終了するのではなく、無限ループに変更することでした。このようにしてactive (running)実行後に​​表示されますsystemctl start my-service-name.service

また、このループ中にシェルプロセスはサービスデーモンの状態を監視します。シェルプロセスがサービスデーモンがエラー状態に入ったことを検出すると、無限ループから抜け出して終了します。

関連情報