systemctl:ユニット名のパターンでフィルタリング

systemctl:ユニット名のパターンでフィルタリング

引数なしで実行すると、systemctlシステムの各デバイスの状態を示すクールなテーブルが出力されます。

$ systemctl

  UNIT                       LOAD   ACTIVE     SUB       DESCRIPTION
  console-setup.service      loaded active     exited    Set console font and keymap
  cron.service               loaded active     running   Regular background program processing daemon
  dbus.service               loaded active     running   D-Bus System Message Bus
  myapp-component1.service   loaded active     running   Application - Component 1
● myapp-component2.service   loaded active     failed    Application - Component 2
  [...]
  dbus.socket                loaded active     running   D-Bus System Message Bus Socket
  myapp-socket1.socket       loaded active     listening Application - a socket
  [...]
  fstrim.timer               loaded active     waiting   Discard unused blocks once a week
  myapp-periodic.timer       loaded active     waiting   Application - periodic job
  [...]

私のアプリケーションは、systemdによって調整された一連のサービス(タイマー、ソケットなど)で構成されています。アプリケーションの各サブコンポーネントに対して、ユニット名は「myapp-」で始まります。systemctl私のアプリケーションコンポーネントの状態を一目で観察するために使用したいと思います。

systemctl名前がパターンに一致するデバイス(たとえば)のみをリストするように要求する方法はありますか'myapp-*'

$ systemctl <some-option-asking-for 'myapp-*`>

  UNIT                       LOAD   ACTIVE     SUB       DESCRIPTION
  myapp-component1.service   loaded active     running   Application - Component 1
● myapp-component2.service   loaded active     failed    Application - Component 2
  myapp-socket1.socket       loaded active     listening Application - a socket
  myapp-periodic.timer       loaded active     waiting   Application - periodic job

ノートsystemctl:結果セットを直接フィルタリングする方法に興味があります。column -t出力全体のGreppingと再フォーマット(例:via)systemctlには避けたい極端なケースがあります。

答え1

systemctl'd 基本コマンドは次のとおりです。list-units、オプションの引数としてパターンが必要なので、

systemctl list-units 'myapp-*'

やりたいことをします。

systemctlたとえば、多くのコマンドがパターンをサポートしています。

systemctl status 'myapp-*'

「myapp-」で始まるすべてのデバイスのステータスが表示されます。

関連情報