首頁 >後端開發 >Golang >Systemd 服務停止後如何保持子程序運作?

Systemd 服務停止後如何保持子程序運作?

DDD
DDD原創
2024-12-25 16:06:19208瀏覽

How Can I Keep Child Processes Running After a Systemd Service Stops?

Systemd:分離子程序

從終端啟動長時間運行的進程時,您可能希望子進程持續存在,即使主進程重新啟動或終止。雖然手動執行是可行的,但當將主程序作為 systemd 服務運行時就會出現問題。

在 systemd 中,預設的子進程終止方法是透過 control-group,這會導致所有子進程都被終止父進程終止時。為了防止這種情況,您可以在服務配置中指定 KillMode=process。

以下是給定範例的實作方法:

[Unit]
Description=ExecTest

[Service]                        
Type=simple
ExecStart=/home/snowm/src/exectest/exectest
User=snowm
KillMode=process

[Install]
WantedBy=multi-user.target

透過設定 KillMode=process,您指示 systemd結束服務時僅終止主程序。這允許子進程即使在父進程停止後也可以繼續運行。

請注意,此方法僅影響在主進程執行期間建立的子進程。當主進程結束時,先前建立的進程仍然會被終止。

以上是Systemd 服務停止後如何保持子程序運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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