Ich habe eine allgemeine Frage. Wie startet man eine systemd-Einheit, *.service
nachdem eine bestimmte *.service
erfolgreich gestartet wurde?
Eine spezifischere Frage ist, wie fange ich website.service
erst an, nachdem ich mongodb.service
begonnen habe? Mit anderen Worten website.service
sollte davon abhängen mongodb.service
.
Antworten:
In der .service-Datei im Abschnitt [Einheit]:
Der wichtige Teil ist der
mongodb.service
Die Manpage beschreibt es jedoch aufgrund der Formatierung auf den ersten Blick nicht so klar
systemd.unit - gut formatiert
systemd.unit - nicht so gut formatiert
quelle
After=
Die Abhängigkeit ist nur dann wirksam, wenn der Dienst einschließlichAfter=
und der Dienst vonAfter=
als Teil Ihres Startvorgangs gestartet werden sollen.Ex:
Auf diese Weise, wenn beide
a.service
undb.service
werden aktiviert , dann systemd wird Auftragb.service
nacha.service
.Wenn ich nicht Missverständnis, was Sie fragen, wie zu starten ,
b.service
wenna.service
startet , obwohlb.service
nicht aktiviert ist .Die Richtlinie hierfür ist
Wants=
oderRequires=
unter[Unit]
.Der Unterschied zwischen
Wants=
undRequires=
besteht darin, dassRequires=
ein Fehler beim Starten dazub.service
führt, dass der Start vona.service
fehlschlägt, während mitWants=
,a.service
selbst wenn erb.service
fehlschlägt. Dies wird auf der Manpage von.unit
ausführlich erläutert .quelle
After=website.service
bedeutet "mein Gerät nach website.service ausführen!". Dies wird in den Dokumenten erklärt: "After = stellt sicher, dass die konfigurierte Einheit nach dem Start der aufgelisteten Einheit gestartet wird" . Ich gehe davon aus, dass "aufgelistete Einheiten" Einheiten auf der rechten Seite von "After =" sind.swap(a, b)