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 telegraf
o 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?
Responder1
você pode analisar a saída do systemctl status
comando.
Mas a maneira mais fácil de obter informações sobre se um serviço está em execução é usando o is-active
subcomando 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 :)