Захват `active (running)` из вывода команды `systemctl`

Захват `active (running)` из вывода команды `systemctl`

telegrafВ настоящее время на машине запущена активная служба( ). Хотите автоматизировать несколько шагов, в которых первым шагом является проверка того, запущена ли служба из shell script.

Я запускаю systemctl status telegrafкоманду для проверки состояния службы вручную. И вывод такой:

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

Я хочу зафиксировать ценностьактивный (работает)в моем скрипте, как это сделать в скрипте Shell?

введите описание изображения здесь

решение1

Вы можете проанализировать вывод команды systemctl status.

Но более простой способ получить информацию о том, запущена ли служба, — использовать подкоманду is-active. systemctlНапример:

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

Если служба не активна, возвращается строка inactive.

Таким образом, в вашем скрипте вы можете либо проверить возвращаемую строку (активна или неактивна), либо проверить код возврата вышеупомянутой команды. Если служба активна, команда возвращается с 0, в противном случае она будет перезапущена с ненулевым кодом возврата.

Привет :)

Связанный контент