2010-05-31 02:34:16 +0000 2010-05-31 02:34:16 +0000
31
31

Автоматический запуск сервера VNC при запуске

Я установил рабочий стол Ubuntu на сервер Ubuntu 9.10 VPS и могу подключиться к серверу с помощью TightVNC. Однако, сервер VNC на этом VPS может быть запущен только путем входа в систему через SSH и ввода следующей команды:

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

Если я запущу эту команду при запуске или в качестве задачи по расписанию, она не запустится. Каковы мои опции?

Ответы (5)

29
29
29
2010-05-31 02:51:43 +0000

Я нашел эти инструкции , найдя в Google ubuntu launch vnc server on startup “.

  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
```.
12
12
12
2012-05-05 21:34:45 +0000

Если вы хотите более динамичную конфигурацию и возможность подключения для нескольких пользователей, то есть лучший способ сделать это. Как корень создает файл (и каталог, если он не существует) /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

Как сказал Стивен в своем ответе, вам нужно запустить vncserver в ЛЕЗУЧШЕЕ ТОЛЬКОЕ ПОЛЬЗОВАТЕЛЬСТВО, в которое вы хотите войти. Я поместил это в шапки, потому что если вы пропустите этот шаг, ничего из этого не сработает. Так что, как корень, ты можешь сделать:

su justin -c vncserver
su bob -c vncserver

Это создаст каталог .vnc в домашнем каталоге каждого пользователя с соответствующими сценариями запуска.

Наконец, сделайте следующее:

update-rc.d vncserver defaults 99

Теперь вы можете либо перезагрузить, либо запустить службу вручную, набрав текст:

service vncserver start
1
1
1
2015-06-28 01:18:17 +0000

Я получаю доступ к Ubuntu друзей я помогаю, чтобы установить или настроить или научить их чему-то. 0x2 & Как мне нужен доступ из Интернета через модем, я использую vino. 0x2 & Все опции совместного использования и безопасности включены во время доступа.
Я не хочу, чтобы вино-сервер был активен все время: все в порядке, он не автозапускается.
У меня не было System>Удаленное меню рабочего стола.
Я отредактировал /usr/share/приложения/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"'

Перед работой я прошу друзей запустить Remote Desktop Preferences (Параметры удаленного рабочего стола) и отметить галочкой пункт Sharing Allow (Разрешить общий доступ)… далее.
При выходе из настроек запускается vino-сервер и они сообщают мне IP-адрес для использования.
По окончании работы они снова запускают Привилегии, чтобы отметить галочкой Разрешение совместного использования… выключено.
При выходе из настроек, вино-сервер останавливается и останавливается, даже если запущен в режиме Sharing off.
Я считаю эту процедуру очень удобной и безопасной для пользователя.

PS: разработчики предпочитают, чтобы их программы запускались локально (в рамках сессии пользователя), потому что ошибка не может так повлиять на глобальную систему.

0
0
0
2013-10-26 21:05:15 +0000

В Ubuntu 12.1 я смог зайти в Системные настройки->Users и выбрать пользователя и установить “Автоматический вход->ON”

Тогда я смог использовать tightVNC, чтобы попасть внутрь без входа в сам ящик. 0x2 и 0x2 и хорошо работал для безголовых ubuntu линукс окно.

0
0
0
2017-01-06 11:27:48 +0000

Я предлагаю использовать решение Stephen jennings также, если вам нужно несколько vnc для разных пользователей, просто создав несколько файлов vncserver_john, vncserver_bill, … файлы. Это позволит вам запускать/останавливать их отдельно. Безусловно, хорошая практика программирования предлагает поместить код, общий для всех пользователей, в один файл, и исходные тексты из всех остальных.

я “унаследовал” ответственность за сервер, где несколько коллег занимаются научным программированием и оценкой данных, все с отдельным vnc. На самом деле сервер работает непрерывно и стабильно в течение многих лет, и пользователи ленятся сохранять свои открытые окна. Тем не менее, отдельные vnc-серверы или X11-серверы иногда застревают, и это большая неприятность, чтобы выключить всех пользователей, чтобы получить один сервер работает снова.

Похожие вопросы

11
13
19
8
10