如何通过 root 知道图形当前用户和显示

如何通过 root 知道图形当前用户和显示

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/ 中挂起脚本),这就是为什么我需要知道用户和显示才能使用。当由根(脚本)使用时,/bin/loginctl list-sessions似乎没有给出任何结果。 (由 root 在终端中使用效果很好)

请问实现这一目标的最佳、可靠的方法是什么?目前,我使用:

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

但我觉得它并不是非常干净,即使它对我来说非常有效。

相关内容