Capture `activo (en ejecución)` desde la salida de un comando `systemctl`

Capture `activo (en ejecución)` desde la salida de un comando `systemctl`

Actualmente se está ejecutando un servicio activo ( telegraf) en una máquina. Quiere automatizar algunos pasos, el primero de los cuales es comprobar que el servicio se está ejecutando desde un archivo shell script.

Estoy ejecutando systemctl status telegrafun comando para verificar el estado del servicio manualmente. y la salida es,

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

quiero capturar el valoractivo (corriendo)en mi script, ¿cómo hacerlo en el script Shell?

ingrese la descripción de la imagen aquí

Respuesta1

podría analizar la salida del systemctl statuscomando.

Pero la forma más sencilla de obtener información sobre si un servicio se está ejecutando es mediante el is-activesubcomando de systemctl. Por ejemplo:

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

Si el servicio no está activo, la cadena devuelta es inactive.

Entonces, en su secuencia de comandos puede verificar la cadena que se devuelve (activa o inactiva) o puede verificar el código de retorno del comando mencionado anteriormente. Si el servicio está activo, el comando regresa con 0; de lo contrario, volverá a ejecutarse con un código de retorno distinto de cero.

Saludos :)

información relacionada