systemctlをrootとして使用して、ユーザーユニットのユニット状態を確認してください。

systemctlをrootとして使用して、ユーザーユニットのユニット状態を確認してください。

ユーザーユニット(スライス)を作成して開始しました。そして:

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のスライスユニットに適したコマンドが欲しい...)

関連情報