Testen, ob eine systemd-unit aktiv ist, in ein bash-script
Schreibe ich ein Skript, um automatisch installieren Sie einen bind-server auf einem CentOs-7-Verteilung.
Bin ich stecken mit systemctl status
, weil es nicht zu einem Fehler-code (es ist richtig, da ein status ist kein Fehler) die ich verwenden kann.
Was ich will, ist zu prüfen, ob der Dienst gestartet wurde (aktiv). Was ist der beste und effizienteste Weg, dies zu tun?
- Eigentlich
systemctl status
hat status zurück - wie ich fand, wenn dabeisystemctl status openvpn@<>
. Wo die Werte0
für den Betrieb, und3
für beendet. Aber dieser Befehl ist interaktiv :(. Daher die @lars vorgeschlagensystemctl is-active
ist der Weg zu gehen, und bessere att-q
wie vorgeschlagen von @palswim
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg, um zu überprüfen, ob ein Dienst aktiv ist, ist mit der
systemctl is-active
Befehl:-q
wechseln, so dass Sie nicht haben, um umleiten der Ausgabe:systemctl -q is-active sshd
Wenn Sie überprüfen möchten, in ein shell-Skript, die Sie tun können:
Überprüfen, ob eine Anwendung nicht ausgeführt wird, fügen Sie einfach ein Ausrufezeichen in der Bedingung.
-q
Flagge es ist besser, zu prüfen, die ausdrücklich für den status-code. z.B. ` systemctl -q-aktive some_application.service\n if [ $? -eq 0 ]; then\n echo 'App'\n ' exit 0\n fi ` S. s. sorry für das Durcheinander mit der code-block, es ist impossibru zu verwenden newline für Kommentare.