사용자 이름으로 DISPLAY 값 가져오기

사용자 이름으로 DISPLAY 값 가져오기

로그인한 사용자의 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

관련 정보