Erfassen Sie „aktiv (läuft)“ aus der Ausgabe eines „systemctl“-Befehls

Erfassen Sie „aktiv (läuft)“ aus der Ausgabe eines „systemctl“-Befehls

Derzeit läuft auf einer Maschine ein aktiver Dienst ( telegraf). Sie möchten einige Schritte automatisieren, wobei zunächst geprüft wird, ob der Dienst von einem ausgeführt wird shell script.

Ich führe systemctl status telegrafden Befehl aus, um den Status des Dienstes manuell zu überprüfen. und die Ausgabe ist:

telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
   Loaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-05-19 12:26:17 UTC; 3 weeks 5 days ago
     Docs: https://github.com/influxdata/telegraf
 Main PID: 1297 (telegraf)
    Tasks: 9 (limit: 49778)
   Memory: 106.3M
   CGroup: /system.slice/telegraf.service
           └─1297 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Ich möchte den Wert erfassenaktiv (läuft)in meinem Skript, wie mache ich das in einem Shell-Skript?

Bildbeschreibung hier eingeben

Antwort1

Sie könnten die Ausgabe des systemctl statusBefehls analysieren.

Der einfachere Weg, Informationen darüber zu erhalten, ob ein Dienst ausgeführt wird, ist jedoch die Verwendung des is-activeUnterbefehls von systemctl. Beispiel:

user@host:~$ systemctl is-active postfix
active

Wenn der Dienst nicht aktiv ist, lautet die zurückgegebene Zeichenfolge inactive.

Sie können in Ihrem Skript also entweder die zurückgegebene Zeichenfolge (aktiv oder inaktiv) oder den Rückgabecode des oben genannten Befehls überprüfen. Wenn der Dienst aktiv ist, gibt der Befehl 0 zurück, andernfalls wird er mit einem Rückgabecode ungleich Null zurückgegeben.

Grüße :)

verwandte Informationen