VNC에서 데스크톱이 활성 상태임을 표시하는지 확인하고 그 수를 확인합니다.

VNC에서 데스크톱이 활성 상태임을 표시하는지 확인하고 그 수를 확인합니다.

언제SSH 로깅Linux 컴퓨터에 접속하여 X-Windows 데스크탑이 있는지 어떻게 알 수 있습니까?전시하다세션(예: VNCServer에 의해 시작된 1개)이 활성 상태입니다. 해당 세션의 번호는 무엇입니까?

이유:
GUI가 필요한 iMacros FireFox 스크립트를 원격으로 실행하는 경우가 있는데, 데스크톱이 실행되지 않으면 다음을 실행하여 실행해야 합니다.

vncserver -name Computer

시작된 경우 해당 번호(예: :1.0:)를 알고 나면 다음을 수행합니다.

export DISPLAY=:1.0
firefox imacros://run/?m=MyMacro.iim

나는 종종 다음을 시도합니다.

$ sudo ps -e | grep "vnc" -i
 1685 ?        06:28:53 Xtightvnc

하지만 숫자는 알 수 없습니다(예: :1.0).

요청 시 추가 데이터 제공(:1에 실행 중인 VNC가 있음):

$ sudo netstat -lnp|grep -i vnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      1685/Xtightvnc
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      1685/Xtightvnc
unix  2      [ ACC ]     STREAM     LISTENING     11847    1685/Xtightvnc      /tmp/.X11-unix/X1

답변1

기본적으로 vnc는 포트 5901을 디스플레이 1로 사용합니다. 따라서 netstat를 사용하여 모든 수신 프로세스를 나열하고 그로부터 디스플레이를 계산할 수 있습니다.

export DISPLAY="$(netstat -ln |
 awk '$4~/:59[0-9][0-9]$/{
  v=$4; sub(/.*:/,"",v);
  print ":" v-5900; exit}')"

netstat 출력이 필드 4와 같다고 가정합니다 0.0.0.0:5901. awk는 ":" 앞의 모든 항목을 제거하고 여기에서 5900을 뺍니다. DISPLAY 환경은 다음 Firefox로 설정되어 있습니다. 이것을 vncserver의 시작과 결합하려면 getdisplay와 같은 함수에 넣고 다음과 같이 사용하십시오.

getdisplay(){
  ... as above
}
getdisplay
if [ -z "$DISPLAY" ]
then    vncserver -name Computer
        getdisplay
fi
firefox ...

관련 정보