從“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,否則它將以非零返回程式碼重新執行。

問候 :)

相關內容