「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

価値を捉えたい活動(実行)私のスクリプトのシェルスクリプトでこれをどのように実行しますか?

ここに画像の説明を入力してください。

答え1

コマンドの出力を解析できますsystemctl status

ただし、サービスが実行されているかどうかに関する情報を取得するより簡単な方法は、is-activeサブコマンドを使用することですsystemctl。たとえば、

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

サービスが有効になっていない場合、返される文字列はですinactive

したがって、スクリプトから返された文字列(アクティブまたは非アクティブ)と上記のコマンドの戻りコードを確認できます。サービスがアクティブの場合、コマンドはゼロを返し、そうでない場合はゼロ以外の戻りコードで再実行されます。

挨拶:)

関連情報