Как мне запустить VNC Server при загрузке?
Как создать общесистемный файл автозапуска? Это будет на облачном сервере с настольной версией Maverick.
Я вошел в систему как root и создал файл автозапуска, используя System/Preferences/StartupApplications
но это закончилось /root/.config/autostart
и не выполнил (насколько я могу судить) после перезагрузки. Файл автозапуска предназначен для запуска bash-скрипта, который запускает VNC-сервер.
Я скопировал файл автозапуска.desktop из /root/.config/autostart
в /etc/xdg/autostart
и перезагрузился. Это, казалось, не имело значения.
Редактировать Как упоминалось в комментарии, цель состоит в том, чтобы запустить мой bash-скрипт, который запускает VNC-сервер при загрузке; не при входе в систему.
7 ответов
Сначала установите сервер TightVNC
sudo apt-get install tightvncserver
,Настройте сервер VNC для пользователя, для которого вы хотите войти в систему. Когда вы запускаете "vncserver" в первый раз, он попросит вас установить пароль. разрешить только SSH туннелирование или VPN-соединения. Чтобы запустить программы или сеанс при запуске сеанса VNC, измените
~/.vnc/xstartup
, Вот пример.#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid black /opt/azureus/azureus & k3b & icewm-session &
Скопируйте следующее в
/etc/init.d/vncserver
, Самый простой способ сделать это - скопировать его в буфер обмена, запуститьsudo -i && cat > /etc/init.d/vncserver && exit
в терминале вставьте его и введите CTRL-D. Обязательно измените переменную USER на того пользователя, под которым вы хотите запустить сервер VNC.#!/bin/sh -e ### BEGIN INIT INFO # Provides: vncserver # Required-Start: networking # Default-Start: 3 4 5 # 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
Сделайте скрипт исполняемым с
sudo chmod +x /etc/init.d/vncserver
,- Наконец, подключитесь к вашему серверу с помощью клиента VNC через порт 590X, где X - это значение "DISPLAY" в сценарии vncserver. На OS X мне нравится использовать Цыпленок VNC. В Windows и Linux клиент TightVNC работает хорошо.
Одна возможность: /etc/rc.local
Содержание говорит это:
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing
Биты выполнения уже установлены на 755 в моей системе. (chmod 755 /etc/rc.local)
Вы можете поместить туда любую команду, которая будет выполняться от имени пользователя root.
Это нормально для вашей цели, пока вы не меняете уровни запуска, я полагаю. (Если вы не знаете, что такое уровни запуска, не берите в голову).
Это, кажется, старый пост, но тема может быть интересна для некоторых пользователей. Для запуска vnc при загрузке вам необходимо
- установить программное обеспечение сервера vnc (здесь мы будем использовать x11vnc)
- настроить сценарий запуска (используется для запуска службы vnc)
Шаг 1 - установить сервер x11vnc
из командной строки введите
sudo apt-get install x11vnc
Чтобы добавить безопасность, вы должны установить pwd
sudo x11vnc -storepasswd
Шаг 2 - Настройте скрипт запуска
- если ваша версия Ubuntu ниже 15.04,
вы создаете файл конфигурации под /etc/init.d/x11vnc.conf
и заполните его правильными командами для выполнения
start on login-session-start
script
/usr/bin/x11vnc -xkb -auth
/var/run/lightdm/root/:0
-noxrecord -noxfixes -noxdamage
-rfbauth /etc/x11vnc.pass
-forever -bg -rfbport 5900 -o /var/log/x11vnc.log
end script
- если ваша версия Ubuntu 15.04 или более поздняя,
эти системы используют systemd, и вам нужно будет создать файл службы /lib/systemd/system/x11vnc.service
и заполните его правильными командами для выполнения
[Unit] Description=Start x11vnc at startup. After=multi-user.target
[Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever
-loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared
[Install] WantedBy=multi-user.target
Перезагрузите сервис
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
Вы можете найти подробную информацию на справочной вики-странице сообщества Ubuntu (см. Здесь) или вы можете попробовать использовать это быстрое использование получателя.
- Для версии Ubuntu ниже 15.04, проверьте этот пост
- Для Ubuntu версии 15.04 или новее, проверьте этот пост
Надеюсь, это полезно
Добавьте следующую строку в файл crontab. Это означает команду после ключевого слова @reboot
выполняется во время самой перезагрузки.
@reboot /usr/bin/vncserver :1
Чтобы открыть файл crontab, нужно использовать команду crontab -e
Если вы используете TigerVNC, то он устанавливает /etc/init.d/vncserver
который запускает все vncservers, настроенные в /etc/sysconfig/vncservers
Например, после запуска будет 2 экземпляра на дисплее 1 и 2 при запуске.
# <display>:<user>
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1080"
VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"
Во время загрузки у вас может быть cron для запуска. Просто используйте строку "@reboot" вместо чисел, которые вы обычно используете, чтобы указать, когда вещь должна работать.
Например, вот как я запускаю Dropbox на машине, на которой он не запускается автоматически:
# m h dom mon dow command
@reboot /usr/bin/dropbox start
'sudo update-rc.d vncserver default' сообщил, что отсутствует; "Требуется-Стоп:" (даже пусто). Поэтому я добавил это как ниже. И больше никаких предупреждений.
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Required-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 6
### END INIT INFO