メインプロセスが Systemd から開始されると子プロセスをデタッチできません
子プロセスを生成するメインプロセスを実行するときは、次のことを行うことが望ましいです。メインプロセスが再起動または終了した場合でも、子プロセスが存続するようにします。 exectest プログラムを使用した例で示されているように、ターミナルからメイン プロセスを実行する場合、この動作は期待どおりに機能します。
ただし、サービス ファイルを使用して Systemd 経由でメイン プロセスが開始されると、子プロセスは動作しません。メインプロセスの存続期間を超えて存続することはできません。これは、Systemd がコントロール グループ内のプロセスを管理し、デフォルトで親プロセスの終了時に子プロセスをクリーンアップするために発生します。
この問題を解決するには、Systemd サービス定義の KillMode 設定を変更できます。デフォルトでは、KillMode は control-group に設定されていますが、process に変更すると、メイン プロセスのみが強制終了され、その子プロセスが実行を継続できるようになります。
更新されたサービス ファイルには、次の行が含まれます。
KillMode=process
この設定を適用すると、メインプロセスが強制終了または Systemd 経由で再起動された場合でも、exectest の子プロセスは存続します。
以上がSystemd が管理する親プロセスが終了した後も、子プロセスを実行し続けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。