로그인한 사용자의 DISPLAY 값을 가져오기 위해 다음 명령을 실행합니다.
$ loginctl list-sessions
SESSION UID USER SEAT
c2 1000 asif seat0
c3 1001 john seat1
그런 다음 다음 명령에서 SESSION 값 중 하나를 사용하십시오.
$ loginctl show-session -p Display -p Active c3
Display=:20
Active=yes
알겠어요 Display=:20
. 로그인한 사용자의 사용자 이름이나 uid로 이 값을 쉽게 얻을 수 있는 방법이 있습니까?
나는 또한 작업을 수행하기 위해 다음 쉘 스크립트를 작성했지만 매우 장황해졌습니다.
#!/bin/bash
clear
BASEDIR=$(dirname $0)
CUID=`id -u`
SESSIONS=`loginctl list-sessions`
readarray -t SESSIONS <<< "$SESSIONS"
for LN in "${SESSIONS[@]}"
do
W=($LN)
SID="${W[0]}"
USD="${W[1]}"
USR="${W[2]}"
SET="${W[3]}"
if [ $CUID == $USD ]; then
SINFO=(`loginctl show-session -p Display -p Active $SID`)
DISPL="${SINFO[0]}"
DISP=( `echo $DISPL | cut -f2 -d=` )
export DISPLAY=$DISP && /usr/bin/python $BASEDIR/run.pyw
fi
done
저는 리눅스 민트 XFCE를 사용하고 있습니다.
답변1
이것은 지정된 사용자의 디스플레이를 표시하는 스크립트입니다.
이 스크립트의 이름을 지정하겠습니다 showuser
.
#!/bin/bash
loginctl show-session $(sudo loginctl -a show-user $1 | grep Display | sed 's/Display.//g') | grep Display
이제 스크립트를 실행하고 사용자 이름을 입력하면 디스플레이가 반환됩니다.
예:
~$ ./showuser john
Display=:20