it-swarm.com.de

Systemd: Dienst nach einem bestimmten Dienst starten

Allgemeine Frage: Wie startet man ein systemd .service nach einem bestimmten .service wurde erfolgreich gestartet?

Spezifische Frage: Wie starte ich website.service nur nach mongodb.service hat begonnen? Mit anderen Worten website.service sollte abhängen von mongodb.service.

66
user2312578

In der .service-Datei im Abschnitt [Unit]:

[Unit]
Description=My Website
After=syslog.target network.target mongodb.service

Der wichtige Teil ist das mongodb.service

Die Manpage beschreibt es aber aufgrund der Formatierung auf den ersten Blick nicht so klar

systemd.unit - gut formatiert

systemd.unit - nicht so gut formatiert

88
user2312578

After= Abhängigkeit ist nur wirksam, wenn Service einschließlich After= und Service inbegriffen von After= sollen beide als Teil Ihres Startvorgangs gestartet werden.

Ex:

a.service
[Unit]
After=b.service

Auf diese Weise, wenn beide a.service und b.service sind aktiviert , dann bestellt systemd b.service nach a.service.

Wenn ich nicht falsch verstanden habe, fragst du mich, wie ich anfangen soll b.service wann a.service startet obwohl b.service ist nicht aktiviert.

Die Direktive dafür ist Wants= oder Requires= unter [Unit].

website.service
[Unit]
Wants=mongodb.service
After=mongodb.service

Der Unterschied zwischen Wants= und Requires= ist das mit Requires=, ein Fehler beim Starten b.service startet a.service zu scheitern, während mit Wants=, a.service startet auch wenn b.service schlägt fehl. Dies wird im Detail auf die Manpage von .unit .

38
Umut