Heim >Backend-Entwicklung >Golang >Wie kann sichergestellt werden, dass untergeordnete Prozesse die Beendigung des übergeordneten Prozesses in systemd überleben?
Beim Ausführen eines Programms, das lang laufende untergeordnete Prozesse erzeugt, ist es wichtig sicherzustellen, dass die untergeordneten Prozesse auch nach dem Hauptprozess aktiv bleiben Der Prozess wird neu gestartet oder beendet. Über die Befehlszeile kann dies erreicht werden, indem das Setsid-Flag des exec.Command-Objekts auf true gesetzt wird. Dadurch wird der untergeordnete Prozess von der Sitzung und der Prozessgruppe des übergeordneten Prozesses getrennt, sodass er weiterhin unabhängig ausgeführt werden kann.
Wenn Sie jedoch den Hauptprozess über systemd starten, kann die Standardeinstellung „KillMode“ in der Dienstkonfigurationsdatei die Funktion beeinträchtigen Ablösungsprozess. Standardmäßig ist der KillMode von systemd auf „control-group“ eingestellt, was bedeutet, dass alle Prozesse innerhalb der Kontrollgruppe der Einheit beendet werden, wenn der Hauptprozess stoppt.
Um dieses Problem zu beheben und den untergeordneten Prozessen zu ermöglichen, den Hauptprozess zu überleben Bei Beendigung muss die KillMode-Einstellung in der Systemd-Dienstdatei geändert werden.
Um die KillMode-Einstellung zu ändern, bearbeiten Sie die systemd-Dienstdatei unter /etc/systemd/system/exectest.service und fügen Sie die folgende Zeile im Abschnitt [Service] hinzu:
KillMode=process
Durch das Festlegen von KillMode auf „Prozess“ wird sichergestellt, dass nur der Hauptprozess selbst beendet wird, wenn Das Gerät wird gestoppt. Dadurch wird sichergestellt, dass die untergeordneten Prozesse unberührt bleiben und unabhängig weiterlaufen.
Nachdem Sie die Änderung vorgenommen haben, speichern Sie die Datei und starten Sie den systemd-Dienst mit den folgenden Befehlen neu:
sudo systemctl daemon-reload sudo systemctl restart exectest
Um zu überprüfen, ob die untergeordneten Prozesse die Beendigung des übergeordneten Prozesses überleben, führen Sie die folgenden Schritte aus:
Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass untergeordnete Prozesse die Beendigung des übergeordneten Prozesses in systemd überleben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!