从“systemctl”命令的输出中捕获“活动(运行)”

从“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,否则它将以非零返回代码重新运行。

问候 :)

相关内容