/usr/bin/*ctl なプログラムが何をするのかを試してみました(busctl)
この記事は openSUSE Advent Calendar 2022 の4日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、busctl を紹介します。
コマンド名: busctl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
busctl は、D-Bus の状態を表示させたり、設定を行ったりするためのツールです。取りあえず起動してみると、
NAME PID PROCESS USER CONNECTION UNIT SESSION DESCRIPTION
:1.0 1 systemd root :1.0 init.scope - -
:1.1 632 wickedd-dhcp6 root :1.1 wickedd-dhcp6.service - -
:1.10 705 wickedd-nanny root :1.10 wickedd-nanny.service - -
:1.105 3249 busctl ribbon :1.105 session-4.scope 4 -
:1.13 720 ModemManager root :1.13 ModemManager.service - -
:1.16 1120 gdm root :1.16 display-manager.service - -
:1.17 1128 accounts-daemon root :1.17 accounts-daemon.service - -
:1.2 618 avahi-daemon avahi :1.2 avahi-daemon.service - -
:1.24 1275 power-profiles- root :1.24 power-profiles-daemon.service - -
:1.26 1280 rtkit-daemon root :1.26 rtkit-daemon.service - -
:1.27 1274 upowerd root :1.27 upower.service - -
:1.3 628 wickedd-auto4 root :1.3 wickedd-auto4.service - -
:1.32 1324 wpa_supplicant root :1.32 wpa_supplicant.service - -
:1.4 630 wickedd-dhcp4 root :1.4 wickedd-dhcp4.service - -
:1.45 1437 colord colord :1.45 colord.service - -
のように、現在のバスの一覧が表示されます。とは言っても、D-bus がどういう物で、何をしているかを分かっていないと、この表示の意味も分かりませんね。Wikipedia先生に聞いてみると、
D-Bus(Desktop Bus、ディーバス)は、メッセージバスと呼ばれる、アプリケーション間でやりとりを行うための、プロセス間通信 (IPC) 実装の1つである。
なのだそうです。
Unix系のプロセス間通信としては、パイプ、シグナル、ソケットとかいろいろありました。また、KDE や Gnome も独自のプロセス間通信機能を持っていました。それらの乱立を統一化するために作られたのが D-Bus ということになります。
ただ、D-Bus そのものは、ユーザが直接さわる物ではありません。あくまでもプロセス(プログラム)の世界で使われるものです。そのため、busctl も、D-Bus の動作の確認やデバッグ、テスト用に使われるものと思った方がよいでしょう。