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 telegraf
den 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?
Antwort1
Sie könnten die Ausgabe des systemctl status
Befehls analysieren.
Der einfachere Weg, Informationen darüber zu erhalten, ob ein Dienst ausgeführt wird, ist jedoch die Verwendung des is-active
Unterbefehls 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 :)