Wie kann ich die Reihenfolge des Herunterfahrens von systemd vorhersagen?


9

Gibt es eine Möglichkeit systemd, mir die grobe Reihenfolge mitzuteilen , in der Dienste heruntergefahren werden, wenn ich das gesamte System sauber herunterfahre? Da systemddie Dinge parallel heruntergefahren werden, gibt es meines Erachtens keine Möglichkeit, die genaue Reihenfolge zu ermitteln, aber es wäre dennoch sehr hilfreich zu wissen, welche Einschränkungen systemddie Abschaltsequenz auferlegen, vorzugsweise in einer leicht verständlichen Visualisierung.

Die Motivation ist, dass es für die Entwicklung und das Debuggen von Servicedateien viel bequemer wäre, diese vorhergesagte Liste im Voraus zu erhalten, als ein echtes Herunterfahren durchführen und dann jedes Mal neu starten und die Protokolle überprüfen zu müssen, wenn ich dies feststellen möchte Welche Auswirkungen hat eine Änderung an einer Serviceeinheitendatei oder einem anderen Aspekt der Konfiguration von systemd auf die Reihenfolge des Herunterfahrens?

Ich hatte gehofft, dass so etwas

systemctl list-dependencies --before shutdown.service

würde den Job machen, aber es gibt nur aus:

shutdown.service

Antworten:


2

Folgendes könnte Ihnen helfen:

systemctl list-dependencies --before shutdown.target

Grüße,


3
Nun, danke, dass du auf meinen dummen Fehler hingewiesen hast, dass es shutdown.targetnicht so ist shutdown.service. Dies gibt mir jedoch immer noch nicht die geordnete Liste, die ich angefordert habe, sondern eine sehr kurze Liste oder sogar eine leere Liste auf einigen Systemen.
Adam Spiers

Systemd ist leider absichtlich undurchsichtig. Für den Oldschool-Sysvinit-Stil könnte man wahrscheinlich die Protokollierung zu den Startdateien hinzufügen und die gestarteten Prozesse in einer Datei mit einem Zeitstempel registrieren - zumindest würde mir dies zuerst einfallen.
Shevy

1
@AdamSpiers @Mohamed Salhi bedeutet "vor" im Grunde "beginnt vor". Dies bedeutet, dass der gewünschte Befehl systemctl list-dependencies --after shutdown.target... zumindest alles findet, was der erste Befehl nicht tut. Es ist auch verwirrend, weil shutdown.targetes startet , aber alle anderen Einheiten stoppen , und in diesem Fall spielt es keine Rolle, ob Sie eine "Vorher" - oder "Nachher" -Bestellung haben. Das Anhalten erfolgt in beiden Fällen vor dem Start.
Sourcejedi

1

Die Reihenfolge des Herunterfahrens ist normalerweise die Umkehrung der Startreihenfolge.

Das heißt, Dämonen erhalten alle ein Abschaltsignal und es dauert unterschiedlich lange, bis sie tatsächlich heruntergefahren und beendet werden.

Ich halte es nicht für möglich, vorherzusagen, welche Dienste in welcher Reihenfolge beendet werden. Ferner steuern Abhängigkeiten einige Sequenzen.


1
Richtig - das war mir aufgrund der Parallelisierung bewusst. Ich brauche jedoch nicht die genaue Reihenfolge - nur welche Bestellungen erzwungen werden und welche Dinge möglicherweise parallel laufen können. Ich werde meine Frage aktualisieren, um dies zu klären. Können Sie sich auch "normalerweise" qualifizieren? Wann wäre es nicht umgekehrt?
Adam Spires
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.