追加読書

追加読書

systemdで管理したいサービスがあります。これをと呼びますfoo。ユニットファイルを作成しましたが、うまくいきます。したがって、を実行するとsystemctl start fooサービスが正しく開始され、を使用してステータスを表示できますsystemctl status foo

ただし、外部プログラムもサービスを開始でき、サービスを開始するために systemd を使用しません。したがって、サービスは実行できますが、systemdを介して開始されなかったため、systemdはこれを知りません。この場合、systemctl status fooサービスが正常に実行されているにもかかわらず、サービス障害が報告されます。

systemctl status foosystemdがサービスを開始しなくても、サービスが実行中であることを正しく報告するように、systemdがこのサービスを「継承」または「採用」する方法はありますか? SysVを使用すると、小さな「状態」スクリプトを書くことができますが、/etc/init.d/foo statusシステムモデルには合わないようです。

明らかに、外部プログラムがサービスを開始しても、サービスプロセスはPID 1 / systemdのサブプロセスです。ただし、foosystemdはそれを開始して登録しないため、これをサービスの一部として認識しません。

具体的な技術は次のとおりです。

  • Oracle WebLogic(このサービスはホストされたWebLogicインスタンスです。)
  • Oracle NodeManager(サービスを開始できる外部プログラム)
  • システム 219

ベストアンサー1

習慣。 systemdに関する限り、プロセスは別のコンテキストで実行されます。

実際、これはデスクトップバスサービスのアクティブ化を避けるべき理由の1つです。 systemdに関する限り、デスクトップバスエージェントによって直接作成されたサービスプロセスはそのサービスの一部です。

人々は、適切な権限で制御グループ間でプロセスを移動できます。しかし、これは作業の半分に過ぎず、残りの半分は、systemdがユニットが起動しなかったときにユニットを起動したと信じさせ、内部データ構造を再構築するために必要な部分を提供しません。

これはsystemdのモデルではなく、ほとんどのサービス管理サブシステムのモデルではありません。

しかし、あまりにも多くの人がOracleソフトウェアを「まともな」サービス単位として考えていますが、実際にはそうではありません。恐怖の家地域。

追加読書

おすすめ記事