Как мне запустить VNC Server при загрузке?


29

Как создать общесистемный файл автозапуска? Это будет на облачном сервере под управлением настольной версии Maverick.

Я вошел в систему как root и создал файл автозапуска с использованием, System/Preferences/StartupApplicationsно он закончился /root/.config/autostartи не выполнил (насколько я могу судить) после перезагрузки. Файл автозапуска предназначен для запуска bash-скрипта, который запускает VNC-сервер.

Я скопировал файл автозапуска .desktop из /root/.config/autostartв /etc/xdg/autostartи перезагрузил. Это, казалось, не имело значения.

Редактировать Как упоминалось в комментарии, цель состоит в том, чтобы запустить мой bash-скрипт, который запускает VNC-сервер при загрузке; не при входе в систему.


Вы имеете в виду автозапуск при загрузке или автозапуск, когда кто-то (кто-либо) входит в систему?
fossfreedom

Я хочу, чтобы сервер VNC автоматически запускался при загрузке.
H2ONaCl

1
Я нашел ответ на SU SE superuser.com/questions/147109/… попробуйте
wisemonkey

Разве VNC не требует дисплея для запуска?
Desgua

Ответы:


19
  1. Сначала установите сервер TightVNC sudo apt-get install tightvncserver.

  2. Настройте сервер VNC для пользователя, для которого вы хотите войти в систему. Когда вы запускаете "vncserver" в первый раз, он попросит вас установить пароль. разрешить только SSH туннелирование или VPN-соединения. Чтобы запустить программы или сеанс при запуске сеанса VNC, измените ~/.vnc/xstartup. Вот пример.

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Скопируйте следующее в /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
    
  4. Сделайте скрипт исполняемым с sudo chmod +x /etc/init.d/vncserver.

  5. Наконец, подключитесь к вашему серверу с помощью клиента VNC через порт 590X, где X - это значение «DISPLAY» в сценарии vncserver. На OS X мне нравится использовать Цыпленок VNC. В Windows и Linux клиент TightVNC работает хорошо.

Источник


Этот superuser.com/questions/147109/… от wisemonkey является эквивалентным ответом stackexchange. Оно работает. Обратите внимание, что путь к X11 может потребоваться изменить.
H2ONaCl

TigerVNC устанавливает , /etc/init.d/vncserverкоторый запускает все vncservers настроенные в/etc/sysconfig/vncservers
Кашьяпа

5
Он был скопирован с сайта abdevelopment.ca/blog/start-vnc-server-ubuntu-boot , но оставил самый важный шагsudo update-rc.d vncserver defaults
Хай Фан,

3

Одна возможность: /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.

Это нормально для вашей цели, пока вы не меняете уровни запуска, я полагаю. (Если вы не знаете, что такое уровни запуска, не берите в голову).


2
Это предложение не сработало для меня.
H2ONaCl


@CeesTimmerman, спасибо, но эти 2 твика не сработали.
H2ONaCl

2

Если вы используете 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"

2

Это, кажется, старый пост, но тема может быть интересна для некоторых пользователей. Для запуска vnc при загрузке вам необходимо

  1. установить программное обеспечение сервера vnc (здесь мы будем использовать x11vnc)
  2. настроить сценарий запуска (используется для запуска службы 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 или новее , проверьте этот пост

Надеюсь, это полезно


1

Добавьте следующую строку в файл crontab. Это означает, что команда после выполнения ключевого слова @rebootво время самой перезагрузки.

@reboot /usr/bin/vncserver :1

Чтобы открыть файл crontab, нужно использовать команду crontab -e


То же, что и этот 6-летний ответ: askubuntu.com/a/124079/158442
Муру

0

Во время загрузки вы можете запустить cron. Просто используйте строку "@reboot" вместо чисел, которые вы обычно используете, чтобы указать, когда вещь должна работать.

Например, вот как я запускаю Dropbox на машине, на которой он не запускается автоматически:

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start

На этой странице написано, что работает, только если система действительно перезагружается (без холодной загрузки).
Сис Тиммерман

0

'sudo update-rc.d vncserver defaults' сообщил, что отсутствует; «Требуется-Стоп:» (даже пусто). Поэтому я добавил это как ниже. И больше никаких предупреждений.

    #!/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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.