2017-04-03 4 views
0

Ich erstelle einen Systemd-Dienst, nennen wir es B unter Ubuntu 16.04, das ich bei jedem Start nach einem bestimmten Dienst namens A starten und dann ein bestimmtes Skript ausführen möchte. Bisher habe ich die Service Unit-Datei erstellt, die aus folgenden Feldern besteht:Wie kann die Unterbrechung eines Systemd-Dienstes die Unterbrechung eines anderen auslösen?

[Unit] 
Description=B 
After=A.service 

[Service] 
ExecStart=/opt/B.sh 

[Install] 
WantedBy=multi-user.target 

Außerdem würde ich den Stillstand des Dienstes A wie das Anhalten des Dienstes B. auslösen Ist es gültig es mit dem zu tun, folgenden Befehl in der A-Serviceeinheit Datei

ExecStop=systemctl stop A.service 

oder gibt es einen anderen Weg? Wenn möglich, möchte ich die vorhandene A-Servicedatei nicht ändern.

Antwort

1

Sie können zwei systemd Funktionen kombinieren, um Ihr Problem zu lösen.

Zunächst können Sie eine drop-in Datei verwenden, um eine vorhandene systemd Konf-Datei zu erweitern, ohne sie zu ändern. Hier ist das Muster:

  1. Erstellen /etc/systemd/system/A.d/stop-b.conf.
  2. Fügen Sie diese auf sie:

[Service] ExecStopPost=systemctl stop B.service

Das wäre, wenn Sie B, wenn A gestoppt wird aufhören wollte. Die zweite Funktion, die Sie verwenden, ist die ExecStopPost= Direktive, die bewirkt, dass ein zusätzlicher Befehl ausgeführt wird, wenn ein Dienst gestoppt wird.

Verwandte Themen