Systemd Reihenfolge: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Wants= *Konfiguriert (schwache) Anforderungsabhängigkeiten zu anderen Units. *Diese Option kann mehr als einmal angegeben werden, oder es können mehrere du…“)
 
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 16: Zeile 16:
 
*Daher sollte diese Einstellung normalerweise mit After= kombiniert werden, um sicherzustellen, dass diese Unit nicht vor der anderen Unit gestartet wird.
 
*Daher sollte diese Einstellung normalerweise mit After= kombiniert werden, um sicherzustellen, dass diese Unit nicht vor der anderen Unit gestartet wird.
 
*Wenn Requisite=b.service für a.service verwendet wird, wird diese Abhängigkeit als RequisiteOf=a.service in der Eigenschaftenliste von b.service angezeigt. RequisiteOf= Abhängigkeit kann nicht direkt angegeben werden.
 
*Wenn Requisite=b.service für a.service verwendet wird, wird diese Abhängigkeit als RequisiteOf=a.service in der Eigenschaftenliste von b.service angezeigt. RequisiteOf= Abhängigkeit kann nicht direkt angegeben werden.
 +
=Before, After=
 +
*Diese beiden Einstellungen erwarten eine durch Leerzeichen getrennte Liste von Einheitennamen.
 +
*Sie können mehr als einmal angegeben werden, in diesem Fall werden Abhängigkeiten für alle aufgelisteten Namen erstellt.
 +
*Diese beiden Einstellungen konfigurieren Ordnungsabhängigkeiten zwischen Einheiten.
 +
*Wenn die Unit foo.service die Einstellung Before=bar.service enthält und beide Units gestartet werden, wird der Start von bar.service verzögert, bis der Start von foo.service abgeschlossen ist.
 +
*After= ist die Umkehrung von Before=, d. h. während Before= sicherstellt, dass die konfigurierte Unit gestartet wird, bevor die aufgelistete Unit mit dem Start beginnt, stellt After= das Gegenteil sicher, dass die aufgelistete Unit vollständig gestartet wird, bevor die konfigurierte Unit gestartet wird.
 +
*Wenn zwei Einheiten mit einer Ordnungsabhängigkeit zwischen ihnen abgeschaltet werden, wird die Umkehrung der Startreihenfolge angewendet.
 +
*D.h. wenn eine Unit mit After= auf einer anderen Unit konfiguriert ist, wird erstere vor letzterer gestoppt, wenn beide heruntergefahren sind.
 +
*Bei zwei Einheiten mit einer beliebigen Ordnungsabhängigkeit zwischen ihnen wird, wenn eine Einheit heruntergefahren und die andere hochgefahren wird, das Herunterfahren vor dem Hochfahren angeordnet.
 +
*Es spielt in diesem Fall keine Rolle, ob die Sortierabhängigkeit After= oder Before= ist.
 +
*Es spielt auch keine Rolle, welches der beiden heruntergefahren wird, solange das eine heruntergefahren und das andere hochgefahren wird; die Abschaltung wird in jedem Fall vor der Inbetriebnahme angeordnet. Wenn zwischen zwei Einheiten keine Ordnungsabhängigkeiten bestehen, werden sie gleichzeitig heruntergefahren oder hochgefahren, und es findet keine Ordnung statt.
 +
*Wann genau ein Gerät hochgefahren ist, hängt vom Gerätetyp ab. Am wichtigsten ist, dass der Start für Diensteinheiten für die Zwecke von Before=/After= als abgeschlossen betrachtet wird, wenn alle konfigurierten Startbefehle aufgerufen wurden und entweder fehlgeschlagen sind oder ein erfolgreicher Start gemeldet wurde. Beachten Sie, dass dies ExecStartPost= (oder ExecStopPost= für den Shutdown-Fall) beinhaltet.
 +
*Es ist ein gängiges Muster, einen Unit-Namen sowohl in die After=- als auch in die Wants=-Option aufzunehmen, in diesem Fall wird die aufgelistete Unit vor der Unit gestartet, die mit diesen Optionen konfiguriert ist.
 +
*Beachten Sie, dass Before=-Abhängigkeiten von Geräteeinheiten keine Auswirkung haben und nicht unterstützt werden.
 +
*Geräte werden im Allgemeinen durch ein externes Hotplug-Ereignis verfügbar, und systemd erstellt die entsprechende Geräteeinheit ohne Verzögerung.
 +
=Quelle=
 +
*https://www.freedesktop.org/software/systemd/man/systemd.unit.html

Aktuelle Version vom 10. Januar 2023, 08:45 Uhr

Wants

  • Konfiguriert (schwache) Anforderungsabhängigkeiten zu anderen Units.
  • Diese Option kann mehr als einmal angegeben werden, oder es können mehrere durch Leerzeichen getrennte Einheiten in einer Option angegeben werden, wobei in diesem Fall Abhängigkeiten für alle aufgelisteten Namen erstellt werden.
  • Die in dieser Option aufgeführten Einheiten werden gestartet, wenn die konfigurierende Einheit gestartet wird.
  • Sollten die aufgelisteten Units jedoch nicht starten oder der Transaktion nicht hinzugefügt werden können, hat dies keinen Einfluss auf die Gültigkeit der Transaktion als Ganzes und diese Unit wird trotzdem gestartet.
  • Dies ist die empfohlene Methode, um den Start einer Einheit mit dem Start einer anderen Einheit zu verknüpfen.

Requires

  • Ähnlich wie Wants=, deklariert aber eine stärkere Anforderungsabhängigkeit.
  • Wenn diese Einheit aktiviert wird, werden die aufgelisteten Einheiten ebenfalls aktiviert.
  • Wenn eine der anderen Units nicht aktiviert wird und eine Ordnungsabhängigkeit After= für die fehlerhafte Unit gesetzt ist, wird diese Unit nicht gestartet.
  • Außerdem wird diese Unit mit oder ohne Angabe von After= gestoppt (oder neu gestartet), wenn eine der anderen Units explizit gestoppt (oder neu gestartet) wird.
  • Häufig ist es besser, Wants= anstelle von Requires= zu verwenden, um ein System zu erreichen, das robuster im Umgang mit fehlgeschlagenen Diensten ist.

Requisite

  • Ähnlich wie Requires=. Wenn die hier aufgelisteten Units jedoch nicht bereits gestartet sind, werden sie nicht gestartet und der Start dieser Unit schlägt sofort fehl.
  • Requisite= impliziert keine Reihenfolgeabhängigkeit, selbst wenn beide Units in derselben Transaktion gestartet werden.
  • Daher sollte diese Einstellung normalerweise mit After= kombiniert werden, um sicherzustellen, dass diese Unit nicht vor der anderen Unit gestartet wird.
  • Wenn Requisite=b.service für a.service verwendet wird, wird diese Abhängigkeit als RequisiteOf=a.service in der Eigenschaftenliste von b.service angezeigt. RequisiteOf= Abhängigkeit kann nicht direkt angegeben werden.

Before, After

  • Diese beiden Einstellungen erwarten eine durch Leerzeichen getrennte Liste von Einheitennamen.
  • Sie können mehr als einmal angegeben werden, in diesem Fall werden Abhängigkeiten für alle aufgelisteten Namen erstellt.
  • Diese beiden Einstellungen konfigurieren Ordnungsabhängigkeiten zwischen Einheiten.
  • Wenn die Unit foo.service die Einstellung Before=bar.service enthält und beide Units gestartet werden, wird der Start von bar.service verzögert, bis der Start von foo.service abgeschlossen ist.
  • After= ist die Umkehrung von Before=, d. h. während Before= sicherstellt, dass die konfigurierte Unit gestartet wird, bevor die aufgelistete Unit mit dem Start beginnt, stellt After= das Gegenteil sicher, dass die aufgelistete Unit vollständig gestartet wird, bevor die konfigurierte Unit gestartet wird.
  • Wenn zwei Einheiten mit einer Ordnungsabhängigkeit zwischen ihnen abgeschaltet werden, wird die Umkehrung der Startreihenfolge angewendet.
  • D.h. wenn eine Unit mit After= auf einer anderen Unit konfiguriert ist, wird erstere vor letzterer gestoppt, wenn beide heruntergefahren sind.
  • Bei zwei Einheiten mit einer beliebigen Ordnungsabhängigkeit zwischen ihnen wird, wenn eine Einheit heruntergefahren und die andere hochgefahren wird, das Herunterfahren vor dem Hochfahren angeordnet.
  • Es spielt in diesem Fall keine Rolle, ob die Sortierabhängigkeit After= oder Before= ist.
  • Es spielt auch keine Rolle, welches der beiden heruntergefahren wird, solange das eine heruntergefahren und das andere hochgefahren wird; die Abschaltung wird in jedem Fall vor der Inbetriebnahme angeordnet. Wenn zwischen zwei Einheiten keine Ordnungsabhängigkeiten bestehen, werden sie gleichzeitig heruntergefahren oder hochgefahren, und es findet keine Ordnung statt.
  • Wann genau ein Gerät hochgefahren ist, hängt vom Gerätetyp ab. Am wichtigsten ist, dass der Start für Diensteinheiten für die Zwecke von Before=/After= als abgeschlossen betrachtet wird, wenn alle konfigurierten Startbefehle aufgerufen wurden und entweder fehlgeschlagen sind oder ein erfolgreicher Start gemeldet wurde. Beachten Sie, dass dies ExecStartPost= (oder ExecStopPost= für den Shutdown-Fall) beinhaltet.
  • Es ist ein gängiges Muster, einen Unit-Namen sowohl in die After=- als auch in die Wants=-Option aufzunehmen, in diesem Fall wird die aufgelistete Unit vor der Unit gestartet, die mit diesen Optionen konfiguriert ist.
  • Beachten Sie, dass Before=-Abhängigkeiten von Geräteeinheiten keine Auswirkung haben und nicht unterstützt werden.
  • Geräte werden im Allgemeinen durch ein externes Hotplug-Ereignis verfügbar, und systemd erstellt die entsprechende Geräteeinheit ohne Verzögerung.

Quelle