Kann den untergeordneten Prozess nicht trennen, wenn der Hauptprozess von Systemd gestartet wird
Wenn ein Hauptprozess ausgeführt wird, der untergeordnete Prozesse erzeugt, ist es wünschenswert, dies zu tun Sorgen Sie dafür, dass die untergeordneten Prozesse auch dann überleben, wenn der Hauptprozess neu startet oder stirbt. Dieses Verhalten funktioniert wie erwartet, wenn der Hauptprozess von einem Terminal aus ausgeführt wird, wie im bereitgestellten Beispiel mit dem Programm exectest gezeigt.
Wenn der Hauptprozess jedoch über Systemd mithilfe einer Servicedatei gestartet wird, tun dies die untergeordneten Prozesse nicht über die Lebensdauer des Hauptprozesses hinaus überleben. Dies geschieht, weil Systemd Prozesse in einer Kontrollgruppe verwaltet und standardmäßig alle untergeordneten Prozesse bereinigt, wenn der übergeordnete Prozess beendet wird.
Um dieses Problem zu beheben, kann die KillMode-Einstellung in der Systemd-Dienstdefinition geändert werden. Standardmäßig ist KillMode auf „control-group“ eingestellt. Wenn Sie ihn jedoch in „process“ ändern, wird sichergestellt, dass nur der Hauptprozess beendet wird, sodass seine untergeordneten Prozesse weiter ausgeführt werden können.
Die aktualisierte Dienstdatei würde die folgende Zeile enthalten:
KillMode=process
Mit dieser Einstellung überleben die untergeordneten Prozesse von exectest auch dann, wenn der Hauptprozess beendet oder über Systemd neu gestartet wird.
Das obige ist der detaillierte Inhalt vonWie kann ich untergeordnete Prozesse am Laufen halten, nachdem der vom System verwaltete übergeordnete Prozess beendet wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!