시작시 VNC 서버 자동 시작


29

Ubuntu 9.10 VPS 서버에 Ubuntu 데스크탑을 설치했으며 TightVNC를 사용하여 서버에 연결할 수 있습니다. 그러나이 VPS의 VNC 서버는 SSH를 통해 로그인하고 다음 명령을 입력해야만 시작할 수 있습니다.

vncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565

시작시 또는 예약 작업으로이 명령을 실행하면 시작되지 않습니다. 내 옵션은 무엇입니까?


왜 시작되지 않는지 알아 내려고 노력 했습니까?
Ignacio Vazquez-Abrams가

답변:


27

Google에서 " 시작시 ubuntu launch vnc server "를 검색하여 이러한 지침 을 찾았습니다 .

  1. VNC 서버를 설치하십시오.
  2. vncserver비밀번호를 설정하기 위해 처음 시작 하십시오.
  3. 다음 파일을 다음과 같이 추가하십시오 /etc/init.d/vncserver(사용자, 지오메트리, 이름 등을 원하는대로 수정하십시오).
  4. sudo chmod +x /etc/init.d/vncserver
  5. sudo update-rc.d vncserver defaults

/etc/init.d/vncserver

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Default-Start:     S
# Default-Stop:      0 6
### END INIT INFO

PATH="$PATH:/usr/X11R6/bin/"

# The Username:Group that will run VNC
export USER="mythtv"
#${RUNAS}

# The display that VNC will use
DISPLAY="1"

# Color depth (between 8 and 32)
DEPTH="16"

# The Desktop geometry to use.
#GEOMETRY="<WIDTH>x<HEIGHT>"
#GEOMETRY="800x600"
GEOMETRY="1024x768"
#GEOMETRY="1280x1024"

# The name that the VNC Desktop will have.
NAME="my-vnc-server"

OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;
esac

exit 0

다음과 같은 오류 출력 gist.github.com/anonymous/821d0ec525abb2fe42d8a070c846fb9e 가 발생 합니다. 빈 값으로 구성을 업데이트해야한다고 생각합니다.
niftylettuce

광산은 작동하지만 유일한 문제는 처음으로 스크립트를 시작하기 위해 비밀번호를 입력하도록 요구한다는 것입니다. 부팅시부터 들어갈 수 없습니다. 어떻게 고칠 수 있습니까?
droopie 2019

@droopie 당신은 암호에 대한 해결책을 찾았습니까?

12

보다 동적 인 구성과 여러 사용자를 연결할 수있는 기능을 원한다면 더 좋은 방법이 있습니다. 루트로서 파일 (및 디렉토리가 존재하지 않는 경우 디렉토리) / etc / sysconfig / vncservers를 작성하십시오.

mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf

방금 만든 vncservers.conf 파일에 다음과 같은 것을 추가하여 각 사용자에게 필요한 서버를 추가하십시오.

VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"

다음으로 빈 init 스크립트를 작성하고 실행 가능하게 만드십시오.

touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver

/etc/init.d/vncserver에 다음을 추가하십시오.

#!/bin/bash

unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"

start() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Starting $prog: "
        ulimit -S -c 0 >/dev/null 2>&1
        RETVAL=0
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        DISP="${display%%:*}"
                        export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
                        su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
                fi
        done
}

stop() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Shutting down VNCServer: "
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        export USER="${display##*:}"
                        su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
                fi
        done
        echo -e "\n"
        echo "VNCServer Stopped"
}

case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac

Stephen이 자신의 답변에서 언급했듯이 로그인하려는 각 사용자로 최소 한 번에 vncserver를 실행해야합니다. 그 단계를 건너 뛰면 아무것도 작동하지 않기 때문에 모자에 넣었습니다. 루트로서 당신은 할 수 있습니다 :

su justin -c vncserver
su bob -c vncserver

그러면 적절한 시작 스크립트를 사용하여 각 사용자 홈 디렉토리에 .vnc 디렉토리가 작성됩니다.

마지막으로 다음을 수행하십시오.

update-rc.d vncserver defaults 99

이제 다음을 입력하여 재부팅하거나 수동으로 서비스를 시작할 수 있습니다.

service vncserver start

1
이것은 실제로 나를 위해 작동하지만 유일한 것은 그것이 자동으로 시작되지 않는다는 것입니다. 사용자 암호를 요청할 수 있기 때문에 생각합니다. 자동으로 트리거되었으므로 요청하지 않습니다. 스크립트를 수동으로 시작하면 내 사용자 비밀번호를 묻습니다. 이 문제를 어떻게 해결할 수 있습니까?
droopie 2019

1

나는 내가 도와주고있는 친구들의 우분투에 접속하여, 설치하거나, ​​구성하거나 가르치기 위해 가르칩니다.
모뎀을 통해 인터넷에서 액세스해야하므로 vino를 사용합니다.
액세스하는 동안 모든 공유 및 보안 옵션이 설정되어 있습니다.
vino 서버가 항상 활성화되기를 원하지 않습니다. 자동 시작되지 않는 것이 좋습니다.
시스템> 원격 데스크톱 메뉴가 없습니다.
/usr/share/applications/vino-preferences.desktop을 다음과 같이 편집했습니다.

# OnlyShowIn=Unity;
Exec=bash -c 'vino-preferences;/usr/lib/vino/vino-server&zenity --info --text="Accès par Internet: `curl http://ipecho.net/plain`:5900"'

일하기 전에 친구에게 원격 데스크톱 환경 설정을 실행하고 공유 허용 ...을 선택하도록 요청합니다.
환경 설정을 종료하면 vino-server가 시작되고 사용할 IP 주소를 알려줍니다.
작업이 완료되면 환경 설정을 다시 실행하여 공유 허용 ...을 선택합니다.
기본 설정을 종료하면 vino-server가 중지되고 공유 해제 상태에서 시작된 경우에도 중지됩니다.
이 절차는 매우 편리하고 사용자에게 가장 안전합니다.

추신 : 개발자는 버그가 글로벌 시스템에 영향을 줄 수 없기 때문에 사용자 세션 내에서 로컬로 프로그램을 실행하는 것을 선호합니다.


0

우분투 12.1에서 시스템 설정-> 사용자로 가서 사용자를 선택하고 "자동 로그인-> ON"을 설정할 수있었습니다.

그런 다음 상자 자체에 로그인하지 않고 tightVNC를 사용하여 로그인 할 수있었습니다.

헤드리스 우분투 리눅스 박스에서 잘 작동했습니다.


내가 수집 할 수있는 것의 문제는 사용자 로그인이 아닌 시작시 vncserver의 전원을 켜는 것입니다.
Roman Luštrik

0

vncserver_john, vncserver_bill, ... 파일을 여러 개 만들어 다른 사용자를 위해 여러 vnc가 필요한 경우에도 stephen jennings 솔루션을 사용하는 것이 좋습니다. 이를 통해 개별적으로 시작 / 중지 할 수 있습니다. 확실히, 좋은 프로그래밍 관행은 모든 사용자에게 공통적 인 코드를 하나의 파일에 넣고 다른 모든 것에서 소스로 만드는 것을 제안합니다.

저는 몇몇 동료들이 별도의 vnc를 가진 과학 프로그래밍과 데이터 평가를 수행하는 서버에 대해 "상속 된"책임을 가지고 있습니다. 서버는 실제로 수년에 걸쳐 지속적으로 안정적으로 실행되며 사용자는 열린 창을 저장하기가 게으르다. 그러나 단일 vncserver 또는 X11 서버가 때때로 멈춤으로써 하나의 서버를 다시 실행하기 위해 모든 사용자를 종료하는 것은 큰 골칫거리입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.