首頁 >後端開發 >Golang >如何防止 systemd 在父進程終止時殺死子進程?

如何防止 systemd 在父進程終止時殺死子進程?

Barbara Streisand
Barbara Streisand原創
2024-12-21 04:57:09702瀏覽

How can I prevent systemd from killing child processes when the parent process terminates?

在Systemd 中處理子進程:解決進程分離問題

當產生長時間運行的子進程時,確保它們在主進程的生命週期之外生存至關重要,特別是當由systemd 管理時。在某些情況下,子程序可能會意外終止,從而導致關鍵後台任務未處理。

嘗試使用go 程式語言建立啟動子進程的主進程時遇到以下問題:

從終端執行此程式時,即使主進程停止或終止(Ctrl Z 和kill -INT 7914),子程序仍然存在。但是,當主程序作為 systemd 服務啟動時,子進程也會突然終止。

要解決此問題,請修改systemd 服務檔案(/etc/systemd/system/exectest.service),新增以下行:

此設定指示systemd 僅終止主進程,允許子進程繼續運作。預設情況下,systemd 使用控制組模式,該模式會殺死與主程序在同一控制組內的所有程序。

更新後的 systemd 服務文件:

經過此修改,子進程將在主進程終止後繼續存在,並保證後台任務的穩定性和連續性。

以上是如何防止 systemd 在父進程終止時殺死子進程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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