從主進程產生子進程時,確保子進程即使在主進程處於活動狀態時也保持活動狀態至關重要終止。在管理長時間運行的後台任務時,這種行為尤其理想。
在您的特定場景中,您希望在從 systemd 服務管理員啟動時將子進程與主進程 (exectest) 分開。但是,您發現子進程與主進程一起終止。
解決方案在於修改systemd 設定檔(/etc/systemd/system/exectest.service)以包含以下行:
KillMode=process
預設情況下,systemd 應用「控制組」終止模式,該模式在終止時終止主進程控制群組內的所有子進程。透過將其變更為“process”,您可以指示 systemd 僅終止主進程本身,而使子進程保持不變。
此修改可確保子進程繼續執行並在主進程終止或重新啟動後繼續存在進程,即使它是從 systemd 啟動的。
以上是如何防止Systemd在主進程退出時殺死子進程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!