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, в противном случае она будет перезапущена с ненулевым кодом возврата.
Привет :)