ユーザーユニット(スライス)を作成して開始しました。そして:
cytrinox@pollux$ systemctl status --user --full firefox-limits.slice
● firefox-limits.slice - Firefox Slice
Loaded: loaded (/home/cytrinox/.config/systemd/user/firefox-limits.slice; static; vendor preset: enabled)
Active: active since Sun 2018-11-25 00:09:14 CET; 37min ago
CGroup: /user.slice/user-1000.slice/[email protected]/firefox.slice/firefox-limits.slice
└─run-r791a1fc1147748059accf82ecded4c56.scope
├─5291 /home/cytrinox/bin/Firefox/firefox
├─5451 /home/cytrinox/bin/Firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 452779 -schedulerPre
├─5500 /home/cytrinox/bin/Firefox/firefox -contentproc -childID 2 -isForBrowser -prefsLen 1 -prefMapSize 452779 -schedulerPre
├─5517 /home/cytrinox/bin/Firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 1 -prefMapSize 452779 -schedulerPre
├─5539 /home/cytrinox/bin/Firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 1 -prefMapSize 452779 -schedulerPre
└─5562 /home/cytrinox/bin/Firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 1 -prefMapSize 452779 -schedulerPre
Nov 25 00:09:14 pollux systemd[858]: Created slice Firefox Slice.
現在の状態を確認できます。
しかし、ルートとしてこのユーザーユニットの状態をどのように取得できますか?
root@pollux:/etc/systemd/system# systemctl status --full firefox-limits.slice
● firefox-limits.slice
Loaded: loaded
Active: inactive (dead)
答え1
残念ながら、rootとして実行すると、systemdデバイスマネージャで実行されているデバイスにアクセスできません。
これはほぼこれは、環境変数を指すように設定しながらsystemctl --user status
ルートとして実行することによって実行できます(参照:XDG_RUNTIME_DIR
/run/user/<uid>
関連コードはbus_connect_user_systemd()
)、残念ながらこれだけでは十分ではありません。
# XDG_RUNTIME_DIR=/run/user/1000 systemctl --user status
Failed to connect to bus: Operation not permitted
問題は、ユーザー管理者に接続した後、systemdが実行しているuidがsystemctl
管理者ソケットを所有するuidと一致することを確認することです(参照:関連コードはbus_check_peercred()
)。
したがって、最善の方法は、su
デバイスの状態を確認するためにユーザーになることです。また、使用時にもsu
これを設定する必要がありますXDG_RUNTIME_DIR
。そうしないと、systemctl
管理者ソケットが見つかりません。
# su cytrinox -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user status'
systemctl status
(またはFirefoxのスライスユニットに適したコマンドが欲しい...)