Capture `ativo (em execução)` da saída de um comando `systemctl`

Capture `ativo (em execução)` da saída de um comando `systemctl`

Atualmente, um serviço ativo( telegraf) está sendo executado em uma máquina. Deseja automatizar algumas etapas nas quais a inicial é verificar se o serviço está sendo executado a partir de um arquivo shell script.

Estou executando systemctl status telegrafo comando para verificar o status do serviço manualmente. e a saída é,

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

Eu quero capturar o valorativo (em execução)no meu script, como fazer no script Shell?

insira a descrição da imagem aqui

Responder1

você pode analisar a saída do systemctl statuscomando.

Mas a maneira mais fácil de obter informações sobre se um serviço está em execução é usando o is-activesubcomando systemctl. Por exemplo:

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

Se o serviço não estiver ativo, a string retornada será inactive.

Portanto, em seu script você pode verificar a string retornada (ativa ou inativa) ou verificar o código de retorno do comando mencionado acima. Se o serviço estiver ativo, o comando retornará 0, caso contrário, será executado novamente com código de retorno diferente de zero.

Saudações :)

informação relacionada