Ja, dafür gibt es mehrere Möglichkeiten.
Die einfachste (das einige der tut, was uou beschreiben, aber nicht alle) ist eine erstellen Zieleinheit und fügen Sie Abhängigkeiten von Ihren Service - Einheiten (zum Beispiel Requires=zookeeper.service kafka.service elassandra.service
und auch eingestellt After=
auf die gleichen Einheiten) . Eine Zieleinheit hilfreich ist alles in Start diese Einheiten zusammen, aber es hilft nicht wirklich, sie alle zusammen zu stoppen (die Verwendung systemctl stop
auf der Zieleinheit stoppt nicht ihre Abhängigkeiten.) Es gibt Möglichkeiten, Einheiten anzuhalten, zum Beispiel systemctl isolate multi-user.target
werden alle Einheiten angehalten, die keine Abhängigkeiten davon sind target, was bedeutet, dass Einheiten, die manuell gestartet werden, gestoppt werden, aber dies ist viel stärker als das Stoppen einer kleinen Gruppe von Einheiten.
Ein besserer Ansatz ist vielleicht die Verwendung der PartOf=
Direktive, die genau so ist, wie Sie es beschreiben. Sie können entweder eine "Dummy" -Serviceeinheit erstellen, um alle Services zusammen zu verwalten, oder einen Ihrer Services auswählen und die anderen zu PartOf
einem Service machen.
Sie müssen PartOf=
alle Einheiten konfigurieren, die Sie gemeinsam starten und stoppen möchten, in Ihrem Fall zookeeper.service, kafka.service und elassandra.service. Beachten Sie jedoch, dass Sie nicht unbedingt die Service Unit-Dateien selbst ändern müssen (z. B. wenn sie mit der Software selbst in deb- oder rpm-Paketen geliefert werden.) Sie können systemctl edit
zum Hinzufügen Override-Dateien (die Sie mithilfe von erstellen können ) verwenden ein kleines Konfigurations-Snippet für eine vorhandene Einheit, das es Ihnen leicht macht, PartOf=
Beziehungen zwischen Einheiten zu definieren, selbst wenn diese in Dateien definiert sind, die Sie nicht ändern möchten.