ルートを介して現在のユーザーを確認してグラフを表示する方法

ルートを介して現在のユーザーを確認してグラフを表示する方法

Gentoo、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

ただし、rootで使用するにはスクリプトが必要です(/etc/elogind/system-sleep/でスクリプトを一時停止)。したがって、ユーザーを知っていて、それを使用するためにマークする必要があります。 root(スクリプト)で使用すると/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

しかし、私にとっては完璧に動作しますが、非常にきれいだとは思いません。

関連情報