it-swarm.com.de

Wie der Befehl systemd stop tatsächlich funktioniert

Ich verwende einen systemd-Dienst, der einen Prozess aufruft, wenn er "gestartet" wurde (z. B. $ systemctl start test.service). Gemäß dem Design bleibt der Prozess für immer in einer Schleife, wir können die Existenz des Prozesses mit dem Befehl 'ps' sehen. Wir haben auch gesehen, dass der Prozess (wie beabsichtigt) für den Befehl systemctl stop beendet wird. Wir möchten jedoch einige sichere Abschaltvorgänge innerhalb des Prozesses ausführen, bevor er beendet wird. Ich bin mir aber nicht sicher, wie ich einen System-Stopp-Vorgang innerhalb des Prozesses erkennen soll.

Sendet ein Befehl systemctl stop test.service ein SIGKILL- oder SIGTERM-Signal, um den Prozess abzubrechen? Wie kann ich einen System-Stopp-Vorgang innerhalb eines Prozesses erkennen?

38
user3805417

Standardmäßig wird ein SIGTERM gesendet, gefolgt von einer Wartezeit von 90 Sekunden und einem SIGKILL.

Das Beenden von Prozessen mit systemd ist sehr anpassbar und gut dokumentiert.

Ich empfehle, sowohl man systemd.kill als auch ExecStop = in man systemd.service als Dokument alle Optionen zu lesen.

56
Mark Stosberg