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 telegraf
un 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?
Respuesta1
podría analizar la salida del systemctl status
comando.
Pero la forma más sencilla de obtener información sobre si un servicio se está ejecutando es mediante el is-active
subcomando 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 :)