Sun, Dec 11, 2022
/usr/bin/*ctl なプログラムが何をするのかを試してみました(timedatectl)
この記事は openSUSE Advent Calendar 2022 の12日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、timedatectl を紹介します。
コマンド名: timedatectl
パッケージ: systemd-249.11-150400.6.8.x86_64
動作: ○
詳細:
timedatectl は、システム時刻の表示/変更を行うコマンドです。引数なしで起動すると以下のような形で日付と時刻を表示します。また、引数 show を指定すると、機械で処理しやすい形で表示します。
% timedatectl Local time: 日 2022-12-11 14:27:55 JST Universal time: 日 2022-12-11 05:27:55 UTC RTC time: 日 2022-12-11 05:27:55 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no % timedatectl show Timezone=Asia/Tokyo LocalRTC=no CanNTP=yes NTP=yes NTPSynchronized=yes TimeUSec=Sun 2022-12-11 14:30:45 JST RTCTimeUSec=Sun 2022-12-11 14:30:45 JST
日付の変更もできます。但し、NTP が動作している場合は、一旦 NTP の同期を止めてからでないと変更ができません。ここは date コマンドと違うところです。
# timedatectl set-time "2022-12-11 15:40:00" Failed to set time: Automatic time synchronization is enabled # timedatectl set-ntp no # timedatectl set-time "2022-12-11 15:40:00" # timedatectl Local time: Sun 2022-12-11 15:40:07 JST Universal time: Sun 2022-12-11 06:40:07 UTC RTC time: Sun 2022-12-11 06:40:07 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: no NTP service: inactive RTC in local TZ: no
日付や時刻の変更は、時刻同期機能を入れておけば使う事は少ないと思いますが、date コマンドよりは情報量が多いので、場合によっては便利かもしれません。
LinodeにopenSUSEがあった
この記事は openSUSE Advent Calendar 2022 の11日目です。
12/4(日)の前日設営と、12/5(月)、6(火)に、Open Source Summit Japan 2022にボランティアスタッフとして参加してきました。
そこでCDN大手のAkamaiさんがブースを出していて、Linodeというクラウドプロバイダーを買収してクラウドサービスを始めたとアピールされていました。クーポン頂いちゃいました。
そしてなんとそのLinodeのイメージにopenSUSE Leapが入っていました。
(クラウドでサーバー用途で使うならMicroOSがいいですが、さすがに利用者が遠ざかってしまいますかね・・・)
他にも、AlmaLinux、Alpine、Arch、CentOS、Debian、Fedora、Gentoo、Kali、Rocky、Slackware、Ubuntuと、一通り揃っているのでは無いでしょうか。(さすがにミラクルはない模様・・・ここはプッシュのチャンスかも)
お値段はこんな感じです。
Shared CPUだとかなりお安い感じで使えるのでは無いでしょうか。パフォーマンスがどれくらい出るものなのか、興味深いですね。なお、GPUは日本だと選べませんでした。
作成時にsshキーを登録できるので、すぐにssh接続で使えます。IPもグローバルを振ってくれます。
podmanをインストールしてnginxを動かしてみました。
いつも通りの操作で普通に動きました。
せっかくなので、クラウドで遊ぶ時は使わせて頂こうと思います。
あと、各リージョンのベンチマークができるサービスもあったので、後日紹介させて頂きます。
Sat, Dec 10, 2022
/usr/bin/*ctl なプログラムが何をするのかを試してみました(powerprofilesctl)
この記事は openSUSE Advent Calendar 2022 の10日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、powerprofilesctl を紹介します。
コマンド名: powerprofilesctl
パッケージ: power-profiles-daemon-0.12-1.2.x86_64
動作: ○
詳細:
powerprofilesctl は、電源モードの表示や変更を行うプログラムです。powerprofiles は GNOME の 設定→電源 で表示される電源モードになります。プロファイルの一覧、現状のプロファイル状態は以下のようにして表示できます。
% powerprofilesctl list balanced: Driver: placeholder * power-saver: Driver: placeholder % powerprofilesctl get power-saver
また変更は下記のように行えます。
# powerprofilesctl set balanced # powerprofilesctl get balanced
ただ、電源プロファイルを変更することはほとんど無いので、このコマンドの出番はあまりないのかもしれません。
Wed, Dec 07, 2022
/usr/bin/*ctl なプログラムが何をするのかを試してみました(hostnamectl)
この記事は openSUSE Advent Calendar 2022 の5日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、hostnamectl を紹介します。
コマンド名: hostnamectl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
hostnamectl は、システムのホスト名や関連する情報の表示や変更を行うプログラムです。昔ながらの、ホスト名を表示するプログラム hostname は、引数を指定しないで入力すると、単にホスト名を返すだけですが、hostnamectl を引数を指定しないで実行すると、
Static hostname: suse154 Icon name: computer-vm Chassis: vm Machine ID: 61ee5253e44f403c9918308e232c84b8 Boot ID: 2dc4f7eae3724c6497708a64e08a516c Virtualization: kvm Operating System: openSUSE Leap 15.4 CPE OS Name: cpe:/o:opensuse:leap:15.4 Kernel: Linux 5.14.21-150400.24.33-default Architecture: x86-64 Hardware Vendor: QEMU Hardware Model: Standard PC _i440FX + PIIX, 1996_
と、たくさんの情報を表示します。今回テストしている環境が KVM 配下であることもバレてしまいます。旧来の hostname コマンドと互換を取るには、引数として hostname を指定すれば良いです。単に hostname を返します。
もちろん、root でないとできませんが、host 名を変更することも可能です。
# hostnamectl hostname suse154A # hostnamectl hostname suse154A
そのほかに、JSON形式で出力することも可能です。
hostnamectl --json=pretty { "Hostname" : "suse154", "StaticHostname" : "suse154", "PrettyHostname" : null, "DefaultHostname" : "localhost", "HostnameSource" : "static", "IconName" : "computer-vm", "Chassis" : "vm", "Deployment" : null, "Location" : null, "KernelName" : "Linux", "KernelRelease" : "5.14.21-150400.24.33-default", "KernelVersion" : "#1 SMP PREEMPT_DYNAMIC Fri Nov 4 13:55:06 UTC 2022 (76cfe60)", "OperatingSystemPrettyName" : "openSUSE Leap 15.4", "OperatingSystemCPEName" : "cpe:/o:opensuse:leap:15.4", "OperatingSystemHomeURL" : "https://www.opensuse.org/", "HardwareVendor" : "QEMU", "HardwareModel" : "Standard PC _i440FX + PIIX, 1996_", "ProductUUID" : null }
JSON 形式で出力する場合、hostname オプションを指定すると、json 機能は無効になってしまうようです。
従来からの hostname コマンドもたぶん残っていくとは思いますが、新しい hostnamectl コマンドも覚えて置いた方が良いかもしれません。
Tue, Dec 06, 2022
/usr/bin/*ctl なプログラムが何をするのかを試してみました(loginctl)
この記事は openSUSE Advent Calendar 2022 の7日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、loginctl を紹介します。
コマンド名: localectl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
loginctl は、systemd の login マネージャからの情報を表示したり設定するためのツールです。表示に関しては、従来の w コマンドや ps コマンド などの機能が含まれています。たとえば、現在ログインしている情報は、下記のように表示されます。
%loginctl SESSION UID USER SEAT TTY 11 1000 ribbon pts/0 12 1000 ribbon pts/2 13 0 root 6 1000 ribbon seat0 tty2
w コマンドではこのように表示されます。表示する内容がかなり異なります。
%w 20:10:49 up 12:55, 5 users, load average: 0.00, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ribbon : : 15:20 ?xdm? 2:18 0.07s gdm-session-worker [pam/gdm-password] ribbon tty2 tty2 15:20 12:55m 0.08s 0.08s /usr/lib/gnome-session-binary ribbon pts/0 192.168.X.Y 18:17 10:29 0.28s 0.00s less ribbon pts/2 192.168.X.Y 19:46 1.00s 0.11s 0.01s w root pts/3 ::1 20:02 7:58 0.09s 0.09s -bash
自分自身のセッション情報は session-status サブコマンドで表示できます。
%loginctl session-status 12 - ribbon (1000) Since: Sat 2022-12-03 19:46:34 JST; 28min ago Leader: 7798 (sshd) TTY: pts/2 Remote: 192.168.X.Y Service: sshd; type tty; class user State: active Unit: session-12.scope ┣ 7798 "sshd: ribbon [priv]" "" ┣ 7800 "sshd: ribbon@pts/2" "" "" ┣ 7801 -bash ┣ 8134 loginctl session-status ┗ 8135 less
さらに、 user-status サブコマンドで、詳細な情報を得ることができます。pstree コマンドにも似た感じです。
%loginctl user-status ribbon (1000) Since: Sat 2022-12-03 15:20:50 JST; 5h 8min ago State: active Sessions: 12 11 *6 Linger: no Unit: user-1000.slice ┣session-11.scope ┃┣ 7431 "sshd: ribbon [priv]" "" ┃┣ 7437 "sshd: ribbon@pts/0" "" "" ┃┣ 7438 -bash ┃┣ 7780 man loginctl ┃┗ 7792 less ┣session-12.scope ┃┣ 7798 "sshd: ribbon [priv]" "" ┃┣ 7800 "sshd: ribbon@pts/2" "" "" ┃┣ 7801 -bash ┃┣ 8270 loginctl user-status ┃┗ 8271 less ┣session-6.scope ┃┣ 4748 "gdm-session-worker [pam/gdm-password]" ┃┣ 4778 /usr/bin/gnome-keyring-daemon --daemonize --login ┃┣ 4784 /usr/lib/gdm/gdm-wayland-session /usr/bin/gnome-session ┃┣ 4788 /usr/lib/gnome-session-binary ┃┗ 7997 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh ┗user@1000.service ┣app.slice ┃┣app-gnome-YaST2\x2dorg.opensuse.yast.LAN-5394.scope ┃┃┣ 5523 dbus-launch --autolaunch 61ee5253e44f403c9918308e232c84b8 --binary-syntax> ┃┃┗ 5524 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7> ┃┣app-gnome-gnome\x2dsoftware\x2dservice-5036.scope ┃┃┗ 5036 /usr/bin/gnome-software --gapplication-service ┃┣app-gnome-org.gnome.Evolution\x2dalarm\x2dnotify-5045.scope ┃┃┗ 5045 /usr/lib/evolution-data-server/evolution-data-server/evolution-alarm-noti> ┃┣app-gnome-org.gnome.SettingsDaemon.DiskUtilityNotify-5018.scope ┃┃┗ 5018 /usr/lib/gsd-disk-utility-notify
そのほかに、セッションを強制切断する kill-session サブコマンドがあります。たとえば、ssh でログインしているセッションを強制切断するためには、
1) w コマンドでユーザを調べる
2) そのユーザが使っている sshd プロセスを ps コマンドで調べる
3) kill コマンドでそのプロセスを終了させる。
というステップが必要でしたが、loginctl では、セッション番号を表示させた後、そのセッションを終了するコマンドを入力することで作業が行えますので、手間が減ります。
# loginctl SESSION UID USER SEAT TTY 11 1000 ribbon pts/0 12 1000 ribbon pts/2 13 0 root 6 1000 ribbon seat0 tty2 4 sessions listed. # loginctl kill-session 13 # loginctl SESSION UID USER SEAT TTY 11 1000 ribbon pts/0 12 1000 ribbon pts/2 6 1000 ribbon seat0 tty2 3 sessions listed.
loginctl は、表示形式が見やすいので、w コマンドなどと併用すると便利でしょう。
Mon, Dec 05, 2022
/usr/bin/*ctl なプログラムが何をするのかを試してみました(localectl)
この記事は openSUSE Advent Calendar 2022 の6日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、localectl を紹介します。
コマンド名: localectl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
localectl は、システムのロケールを表示したり、変更を行うコマンドです。そのほかに、キーボードマッピングの変更も行えます。locale コマンドと loadkeys や kbdconfig の後継とも考えることができます。ただし、機能は強化されています。
ロケールの表示については、 locale コマンドと localectl コマンドでは内容が違い、locale コマンドの方が環境変数に設定されている値を表示するのに対し、localectl コマンドでは、最低限の物のみを表示します。
%locale LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL= %localectl System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp X11 Layout: jp X11 Model: microsoftpro X11 Options: terminate:ctrl_alt_bksp
また、localectl list-locales でロケールの一覧を表示することができますが、その結果は locale コマンドの結果とは異なっていました。locale コマンドで表示できる、UTF-8系以外のロケールが、localectl では表示されません。
% locale -a | grep ja ja_JP.eucjp ja_JP.shiftjisx0213 ja_JP.sjis ja_JP.utf8 %localectl list-locales | grep ja ja_JP.UTF-8
但し、localectl でロケールの一覧に表示されていない、たとえば ja_JP.sjis を指定しても、変更することはできました。ちなみに、ロケールの変更は、localectl のサブコマンド set-locale で指定します。
キーボードマップの変更はサブコマンド set-keymap で指定します。これも、loadkeys で指定できるキーマップと異なります。loadkeys の場合ですと、IA アーキテクチャを使用する場合には /usr/share/kbd/keymaps/i386/ 配下にあるキーマップを使いますが、そこにあるマップ一覧と同じものになっています。ただ、標準 jp106 以外の使い道は少ないと思いますが….
%localectl list-keymaps | grep jp jp jp-OADG109A jp-dvorak jp-kana86 jp106 mac-jp106 %find /usr/share/kbd/keymaps -name "jp*" -print /usr/share/kbd/keymaps/i386/qwerty/jp106.map.gz /usr/share/kbd/keymaps/xkb/jp-dvorak.map.gz /usr/share/kbd/keymaps/xkb/jp-OADG109A.map.gz /usr/share/kbd/keymaps/xkb/jp-kana86.map.gz /usr/share/kbd/keymaps/xkb/jp.map.gz
localectl でのロケール変更は、システム全体の変更となるので、一時的な変更には使えません。一時的な変更は、環境変数を設定し直すことになります。キーボードの変更についても、loadkeys と同等のことはできますが、locale と言う名前でキーボードの操作、と言うことになるので、ちょっと分かりにくいかもしれません。使い道は限定されそうです。
Sat, Dec 03, 2022
/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 の動作の確認やデバッグ、テスト用に使われるものと思った方がよいでしょう。
Fri, Dec 02, 2022
Ubuntu用のバイナリをopenSUSE で動かす
この記事は openSUSE Advent Calendar 2022 の3日目です。
メーカー製のプロダクトの一部には、Windows/Mac だけではなくて Linux 向けの物を用意している場合があります。しかし、たまたま使おうとしたものが、Ubuntu 向けしかありませんでした。
そこで、Ubuntu 向けのバイナリ(dpkg として提供されている物) が openSUSE で動くかどうかを試してみました。
結論から言うと、できます。しかもやり方は難しくありません。
まず、Ubuntu 上で、openSUSE で動かしたいバイナリ(dpkg) をインストールします。この時、どこにインストールされたかを控えておきます。dpkg -deb -c dpkg名 とすれば一覧が表示されます。
次に、インストールされたファイルを全部まとめて openSUSE 側に持って行き、展開します。その後、展開したファイル中にあるターゲットのプログラムを起動すれば動作します。
たとえば、QNAP が提供している、QNAP NAS 一覧を表示したり、ログインしたりするためのツール QFinderPro で試してみましょう。Ubuntu 上では、dpkg の内容は
$ dpkg-deb -c QNAPQfinderProUbuntux64-7.8.2.0928.deb drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./ drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/ drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/ drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/ drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/ drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/ drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ -rw-rw-r-- qnap/qnap 5587 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/cs.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6546 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/da.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5731 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/de.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 13337 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/el.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5497 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/en.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5847 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/es.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6431 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/fi.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5945 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/fr.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6025 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/hu.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5752 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/it.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6276 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ja.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 38927 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ko.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6498 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/nl.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6454 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/nn.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5714 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/pl.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5700 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/pt.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5716 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ro.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 7367 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ru.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6516 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/sv.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 8952 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/th.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5696 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/tr.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 5093 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/zhcn.UEPConsentForm.htm -rw-rw-r-- qnap/qnap 6582 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/zhtw.UEPConsentForm.htm drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/License/ -rw-rw-r-- qnap/qnap 94964 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/License/QfinderThirdPartySoftwareNotices.htm -rwxrwxr-x qnap/qnap 20314824 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/QfinderPro -rwxrwxr-x qnap/qnap 274 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/QfinderPro.sh (以下略)
となっています。ですので、/usr/local/bin/QNAP 配下やその他を何らかの手段で openSUSE 側に持って行き、展開します。あとは、 /usr/local/bin/QNAP/QfinderPro/QfinderPro.sh を実行すれば、Ubuntu 向けとして提供されているプログラムが openSUSE でも動きます。
Thu, Dec 01, 2022
/usr/bin/*ctl なプログラムが何をするのかを試してみました(1)
この記事は openSUSE Advent Calendar 2022 の1日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、bluetoothctl を紹介します。
コマンド名: bluetoothctl
パッケージ: bluez-5.55-150300.3.11.1.x86_64
動作: ○
詳細:
bluetooth の制御をするためのコマンドです。初っ端からですが、systemd とは無関係です。動作には、bluethoothd が必要です。
手持ちの、openSUSE が動く物理マシンでは、bluetooth 機能が標準で入っていなかったので、USB 接続の、バッファローの USB アダプタを使って検証してみました。
まずは、systemd で bluetoothd を起動しておきます。
続いて、USB アダプタを差し込み、bluetoothctl を起動します。
起動すると、プロンプトが表示されるので、デバイスのスキャンをするため、スキャンコマンドを入力すると、エラーになってしまいます。
# bluetoothctl Agent registered [CHG] Controller 00:1B:DC:F3:8B:51 Pairable: yes [bluetooth]# scan on Failed to start discovery: org.bluez.Error.NotReady [bluetooth]#
これは、USB Bluetooth アダプタを差し込んだだけでは、まだ機能が動いていないためです。まずは、Bluetooth アダプタの機能を有効にするため、power on と入力します。すると、今度は見えるようになりました。
# power on [CHG] Controller 00:1B:DC:F3:8B:51 Class: 0x00000104 Changing power on succeeded [CHG] Controller 00:1B:DC:F3:8B:51 Powered: yes [bluetooth]# scan on Discovery started [CHG] Controller 00:1B:DC:F3:8B:51 Discovering: yes [NEW] Device 77:6C:E6:94:2A:38 77-6C-E6-94-2A-38 [NEW] Device 7E:4D:FE:CB:CC:D9 7E-4D-FE-CB-CC-D9 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -73 [NEW] Device 4C:FD:32:93:41:95 4C-FD-32-93-41-95 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -65 [NEW] Device 46:D9:DC:39:CC:E8 46-D9-DC-39-CC-E8 [NEW] Device 8C:DE:52:B8:AB:EA SRS-X33 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -73 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -65 [bluetooth]#
ここで、pair コマンドを入力すると
# pair 8C:DE:52:B8:AB:EA Attempting to pair with 8C:DE:52:B8:AB:EA [CHG] Device 8C:DE:52:B8:AB:EA Connected: yes [CHG] Device 8C:DE:52:B8:AB:EA Modalias: bluetooth:v0039p1582d2110 [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 00001108-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA ServicesResolved: yes [CHG] Device 8C:DE:52:B8:AB:EA Paired: yes Pairing successful [bluetooth]#
となり、ペアリングが出来るようになりました。
この先は試してみていませんが、デバイスの削除とか情報の取得とか色々できるようです。
GUI な環境が無い状況での bluetooth 利用には使えると思います。
Mon, Nov 14, 2022
tftp を使う時に xinetd は不要だった
ネットワークブートなどを行う時、tftp を起動させるために xinetd を使うことがあります。Cent OSだとバージョン7くらいまではそうなってました。しかし、openSUSE Leap 15.4 の /etc/xinetd.d を見ると、tftp の記述がありません。いろいろ調べて見ると、
systemctl enable tftp
systemctl start tftp
で出来てしまうのですね。
サービスの類いはすべて systemd で、という流れなのでしょう。
15.4 では、/etc/xinetd.d/ には、chargen,daytime,discard,echor,servers,services,time しか残っていませんでした。