언제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 ...