systemctl을 루트로 사용하여 사용자 유닛의 유닛 상태를 확인하세요.

systemctl을 루트로 사용하여 사용자 유닛의 유닛 상태를 확인하세요.

사용자 유닛(슬라이스)을 생성하고 시작했습니다. 그리고:

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

불행하게도 아니요, 루트로 실행할 때는 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의 슬라이싱 단위에 적합한 명령을 원합니다...)

관련 정보