
Wie erkennen Sie systemd
, ob eine Anforderung mit einer beliebigen Instanz aus einer Liste von Instanzen erfüllt ist?
Angenommen, ich habe ein Ziel namens main_target.target
und eine Servicevorlage namens [email protected]
. Während des normalen Betriebs sind davon nur folgende Instanzen [email protected]
vorhanden:
serv@ex1
serv@ex2
serv@ex3
Nureinsdieser Instanzen existieren zu einem bestimmten Zeitpunkt, und ich möchte sagen, main_target.target
dass sie erfüllt ist, wann immerbeliebigder drei Instanzen existieren.
Intuitiv hätte ich gerne etwas Ähnliches wie das SMF- require_any
Tag, aber ich konnte in der gesamten systemd
Dokumentation nichts dergleichen finden.
Hinweis 1: Ich weiß, dass ich mit der Direktive serv@ex1
, serv@ex2
, serv@ex3
und gegenseitig ausschließend machen kann Conflicts=
.
Before=
Hinweis 2: Ich weiß auch, dass ich die Anweisungen und verwenden kann, After=
um die drei Instanzen so zu klassifizieren, dass sie in einer bestimmten Reihenfolge gestartet werden.
Antwort1
Wie Sie erwähnen, können Sie die Dienste mit der Direktive gegenseitig ausschließen Conflicts=
. Die systemd
Ziele sind nur eine Methode zum Gruppieren von Einheiten, sie haben keine komplexen Abhängigkeitsoptionen.
Eine Unit-Konfigurationsdatei, deren Name auf „.target“ endet, kodiert Informationen zu einer Zielunit von systemd, die zum Gruppieren von Units und als bekannte Synchronisierungspunkte beim Start verwendet werden.
Dieser Unit-Typ hat keine speziellen Optionen. Siehe systemd.unit(5) für die gemeinsamen Optionen aller Unit-Konfigurationsdateien. Die gemeinsamen Konfigurationselemente werden in den allgemeinen Abschnitten [Unit] und [Install] konfiguriert. Ein separater Abschnitt [Target] existiert nicht, da keine zielspezifischen Optionen konfiguriert werden können.
systemd.unitals Referenz.
Sie können nur in enthaltene Anweisungen verwenden systemd.unit
. Eine Methode zum Starten nur eines von mehreren Diensten ist nicht enthalten.