ホームページ >バックエンド開発 >Golang >Systemd が管理する親プロセスが終了した後も、子プロセスを実行し続けるにはどうすればよいですか?

Systemd が管理する親プロセスが終了した後も、子プロセスを実行し続けるにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-27 19:40:14209ブラウズ

How Can I Keep Child Processes Running After the Systemd-Managed Parent Process Exits?

メインプロセスが Systemd から開始されると子プロセスをデタッチできません

子プロセスを生成するメインプロセスを実行するときは、次のことを行うことが望ましいです。メインプロセスが再起動または終了した場合でも、子プロセスが存続するようにします。 exectest プログラムを使用した例で示されているように、ターミナルからメイン プロセスを実行する場合、この動作は期待どおりに機能します。

ただし、サービス ファイルを使用して Systemd 経由でメイン プロセスが開始されると、子プロセスは動作しません。メインプロセスの存続期間を超えて存続することはできません。これは、Systemd がコントロール グループ内のプロセスを管理し、デフォルトで親プロセスの終了時に子プロセスをクリーンアップするために発生します。

この問題を解決するには、Systemd サービス定義の KillMode 設定を変更できます。デフォルトでは、KillMode は control-group に設定されていますが、process に変更すると、メイン プロセスのみが強制終了され、その子プロセスが実行を継続できるようになります。

更新されたサービス ファイルには、次の行が含まれます。

KillMode=process

この設定を適用すると、メインプロセスが強制終了または Systemd 経由で再起動された場合でも、exectest の子プロセスは存続します。

以上がSystemd が管理する親プロセスが終了した後も、子プロセスを実行し続けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。