Ich muss viele Service-Unit-Dateien neu starten und möchte sie nicht alle abtippen müssen. Ist es möglich, ein einzelnes Ziel oder einen einzelnen Service zu haben, der nicht weiß, wie die anderen Services gestartet werden, sie aber zusammenfasst, sodass sie alle mit einem einzigen Befehl neu gestartet werden?
Wie schreibe ich meine Systemd-Service-Unit-Datei oder Zieldatei, wenn ich dies möchte systemctl restart one-to-rule-them-all
?
Anforderungen: 1. Das übergeordnete Ziel möchte, dass viele andere Dienste gestartet werden. 2. Das übergeordnete Ziel sollte nichts darüber wissen, wie diese Dienste gestartet werden.
Als ich dies versucht habe, sudo systemctl restart one-to-rule.target
passierte nichts.
# /etc/systemd/system/one-to-rule.target
[Unit]
Description=One To Rule Them All
Requires=multi-user.target
Wants=program-api.service program-gui.service yet-another.service
After=multi-user.target display-manager.service
[Install]
WantedBy=graphical.target
Alle diese Einheiten waren aktiviert program-api.service
program-gui.service
yet-another.service
und one-to-rule.target
scheinen alle geladen und aktiv zu sein. Ich kann den Rechner booten und die Dienste werden alle genau so gestartet, wie ich sie haben möchte. Ich möchte jedoch einfach etwas eingeben systemctl restart one-to-rule.target
oder so, anstatt neu zu booten.
Die Abhängigkeitsdiagramme sehen so aus
$ systemctl list-dependencies one-to-rule.target
one-to-rule.target
● ├─program-api.service
● ├─program-gui.service
● ├─yet-another.service
● └─multi-user.target
$ systemctl list-dependencies --reverse one-to-rule.target
one-to-rule.target
● └─graphical.target
Antwort1
Dies kann funktionieren, aber jede dieser Service-Einheiten muss über verfügen, PartOf=one-to-rule.target
damit Neustarts an sie weitergegeben werden. (Dies ist eigentlich nur eine schwächere Version von Requires=<…>.target
.)
Leider ist es nicht möglich, die umgekehrte Abhängigkeit (ConsistsOf) direkt im Ziel anzugeben – Sie müssen alle Servicedateien erweitern.