首頁 >後端開發 >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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn