![루트를 통해 현재 사용자를 확인하고 그래프를 표시하는 방법](https://linux55.com/image/226511/%EB%A3%A8%ED%8A%B8%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%ED%98%84%EC%9E%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A5%BC%20%ED%99%95%EC%9D%B8%ED%95%98%EA%B3%A0%20%EA%B7%B8%EB%9E%98%ED%94%84%EB%A5%BC%20%ED%91%9C%EC%8B%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
젠투, openrc, X11.
안녕하세요,
일시 중지된 프로세스의 경우 다음과 같은 것을 얻어야 합니다.
[user] [DISPLAY]
예를 들어:
chris :0
나는 이것을 할 수 있다:
for sessionid in $(/bin/loginctl list-sessions --no-legend | awk '{ print $1 }'); do
/bin/loginctl show-session -p Display -p Name --value $sessionid | sed ':a;N;s/\n/ /'
done
하지만 루트에서 사용하려면 스크립트가 필요합니다(/etc/elogind/system-sleep/에서 스크립트를 일시 중지). 그래서 사용자를 알아야 하고 이를 사용하기 위해 표시해야 합니다. 루트(스크립트)에서 사용하면 /bin/loginctl list-sessions
결과가 나오지 않는 것 같습니다. (루트로 터미널에서 사용하면 잘 작동합니다)
이를 달성하는 가장 신뢰할 수 있는 방법은 무엇입니까? 현재 나는 다음을 사용합니다:
if [ -S /tmp/.X11-unix/X* ] ; then
display=":$(ls /tmp/.X11-unix/X* 2>/dev/null | sed 's#/tmp/.X11-unix/X##' | head -n 1)"
if [ -n "$display" ]; then
user=$(who | grep '('$display')' | awk '{print $1}' | sort -u | head -n1)
[ -n "$user" ] && echo $user $display
fi
fi
하지만 나에게는 완벽하게 작동하지만 매우 깨끗하다고 생각하지 않습니다.