Рейтинг:1

Запуск нескольких одновременных сеансов VNC

флаг hm

Я работаю над проектом для клиента, который хочет получить доступ к некоторым приложениям Windows через мой веб-сайт с помощью noVNC, что дало мне идею настроить сервер с несколькими пользователями. Я установил TigerVNC-сервер на свой CentOS 7 VPS, который хорошо работает, когда подключен один пользователь, но когда подключается второй пользователь, он / она получит только черный экран, так как кажется, что gnome не запустится для второго пользователь.

Если я, например, запускаю vncservice@:1 все работает нормально, и пользователь войдет в систему без проблем, но когда vncservice@:2 запустится, он не запустит gnome, и он / она получит черный экран только с курсором. Когда vncservice@:2 запускается первым, этот пользователь будет запущен в gnome, но vncservice@:1 не увидит свой рабочий стол и т.д. и т.п.

Вот как выглядит моя установка:

[Пользователь 1 и 2 ~/.vnc/xstartup]
#!/бин/ш

отменить SESSION_MANAGER
сбросить DBUS_SESSION_BUS_ADDRESS
/etc/X11/xinit/xinitrc
# Предположим, что либо Gnome, либо KDE будут запущены по умолчанию при установке
# В этом случае мы хотим автоматически завершать сеанс, когда пользователь выходит из системы. В случае, если вы измените
# /etc/X11/xinit/Xclients или ~/.Xclients самостоятельно для достижения другого результата, то вам следует
# будьте ответственны за изменение приведенного ниже кода, чтобы избежать автоматического уничтожения вашей сессии

спать 60

если [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; тогда
    vncserver -убить $DISPLAY
    killall -u $ПОЛЬЗОВАТЕЛЬ
фи

[/etc/X11/xinit/xinitrc]

#!/бин/ш

# Обязательный источник xinitrc-common, который является общим кодом, общим для
# Сценарии Xsession и xinitrc, которые были исключены, чтобы избежать дублирования
. /etc/X11/xinit/xinitrc-общий

# У пользователя могут быть собственные клиенты, которых он хочет запустить. Если они этого не сделают,
# вернуться к системным настройкам по умолчанию.
если [ -f $HOME/.Xclients ]; тогда
    exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \
    exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients
Элиф [-f /etc/X11/xinit/Xclients]; тогда
    exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \
    exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients
еще
    # Отказоустойчивые настройки. Хотя мы никогда не должны попасть сюда
    # (мы также предоставляем запасные варианты в Xclients) это не помешает.
    [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
    [ -x /usr/bin/xclock ] && /usr/bin/xclock -геометрия 100x100-5+5 &
    [ -x /usr/bin/xterm ] && xterm -геометрия 80x50-50+150 &
    [ -x /usr/bin/twm ] && /usr/bin/twm
фи

[vncserver@:1 и vncserver@:2 заменяется фактическим именем пользователя]

[Ед. изм]
Описание=Служба удаленного рабочего стола (VNC)
After=syslog.target network.target

[Оказание услуг]
Тип = разветвление
Пользователь=<ИМЯ ПОЛЬЗОВАТЕЛЯ>
Группа=<ИМЯ ПОЛЬЗОВАТЕЛЯ>

ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/<ИМЯ ПОЛЬЗОВАТЕЛЯ>/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i


[Установить]
WantedBy=многопользовательская.цель

[Журнал VNC второго пользователя]

[root@.... ~]# статус systemctl vncserver@:5
vncserver@:5.service — служба удаленного рабочего стола (VNC)
   Загружено: загружено (/etc/systemd/system/vncserver@:5.service; отключено; настройка поставщика: отключена)
   Активно: активно (работает) с za 24 июля 2021 г., 19:04:54 CEST; 59 секунд назад
  Процесс: 25990 ExecStart=/usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
  Процесс: 25981 ExecStartPre=/usr/bin/vncserver -kill %i (code=exited, status=2)
 Основной PID: 25997 (Xvnc)
   CGroup: /system.slice/system-vncserver.slice/vncserver@:5.service
           ââ25997 /usr/bin/Xvnc :5 -auth /home/AHtYezzDXegQScyu/.Xauthority -desktop <HOSTNAME>:5 (AHtYezzDXegQScyu) -fp catalog:/etc/X11/fontpath.d -geometry 1024x768 - pn -rfbauth /home/AHtYezzDXegQScyu/.vnc/passwd -rfbport 5905 -rfbwait 30000
           ââ26006 /bin/sh /home/AHtYezzDXegQScyu/.vnc/xstartup
           ââ26018 dbus-launch --sh-syntax --exit-with-session
           ââ26019 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
           ââ26053 /usr/libexec/imsettings-демон
           ââ26057 /usr/libexec/gvfsd
           ââ26062 /usr/libexec/gvfsd-fuse /home/AHtYezzDXegQScyu/.gvfs -f -o big_writes
           ââ26126 /usr/libexec/at-spi-bus-launcher
           ââ26131 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
           ââ26135 /usr/libexec/at-spi2-registryd --use-gnome-session
           ââ26158 /usr/bin/gnome-keyring-daemon --start --components=ssh
           ââ26241 /usr/libexec/xdg-permission-store
           ââ26246 /usr/libexec/gnome-shell-календарь-сервер
           ââ26251 /usr/libexec/эволюция-источник-реестр
           ââ26258 /usr/libexec/гоа-демон
           ââ26269 /usr/libexec/goa-identity-service
           ââ26275 /usr/libexec/mission-control-5
           ââ26286 /usr/libexec/gvfs-udisks2-volume-монитор
           ââ26293 /usr/libexec/gvfs-mtp-volume-monitor
           ââ26299 /usr/libexec/gvfs-goa-volume-monitor
           ââ26305 /usr/libexec/gvfs-gphoto2-volume-monitor
           ââ26310 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
           ââ26311 /usr/libexec/gvfs-afc-volume-monitor
           ââ26411 /usr/libexec/gsd-print-notifications
           ââ26413 /usr/libexec/gsd-rfkill
           ââ26418 /usr/libexec/gsd-screensaver-proxy
           ââ26454 спать 60
           ââ26458 /usr/libexec/эволюция-календарь-фабрика

24 июля 19:05:22 <HOSTNAME> gnome-session-binary [26007]: ПРЕДУПРЕЖДЕНИЕ: не удалось запустить приложение: невозможно запустить приложение: не удалось разветвить (ресурс временно недоступен)
24 июля 19:05:22 <HOSTNAME> gsd-print-notif[26411]: не удалось выполнить обработчик system-config-printer-udev: не удалось разветвить (ресурс временно недоступен)
24 июля 19:05:22 <HOSTNAME> gnome-session-binary [26007]: ПРЕДУПРЕЖДЕНИЕ: приложение «org.gnome.SettingsDaemon.Power.desktop» убито сигналом 5
24 июля 19:05:22 <HOSTNAME> gnome-session [26007]: gnome-session-binary [26007]: ПРЕДУПРЕЖДЕНИЕ: приложение «org.gnome.SettingsDaemon.Power.desktop» убито сигналом 5
24 июля 19:05:22 <HOSTNAME> gnome-session-binary [26007]: GLib-WARNING: GError установлен поверх предыдущей GError или неинициализированной памяти.
                                                                       Это указывает на ошибку в чьем-то коде. Вы должны убедиться, что ошибка имеет значение NULL, прежде чем она будет установлена.
                                                                       Сообщение об ошибке перезаписи было: Невозможно запустить приложение: не удалось разветвить (ресурс временно недоступен)...
24 июля 19:05:22 <HOSTNAME> gnome-session [26007]: gnome-session-binary [26007]: GLib-WARNING: GError установлен поверх предыдущей GError или неинициализированной памяти.
24 июля 19:05:22 <HOSTNAME> gnome-session[26007]: это указывает на ошибку в чьем-то коде. Вы должны убедиться, что ошибка имеет значение NULL, прежде чем она будет установлена.
24 июля 19:05:22 <HOSTNAME> gnome-session [26007]: сообщение об ошибке перезаписи было: Невозможно запустить приложение: не удалось разветвить (ресурс временно недоступен)
24 июля 19:05:22 <HOSTNAME> evolution-calen [26465]: создание потока «gdbus»: ошибка при создании потока: ресурс временно недоступен
24 июля 19:05:47 <HOSTNAME> gnome-shell-cal [26246]: не удалось загрузить источник «дни рождения»: истекло время ожидания

[/etc/X11/xinit/Xclients]

#!/бин/баш

GSESSION="$(тип -p гном-сеанс)"
STARTKDE="$(введите -p startkde)"

# проверить, есть ли у пользователя предпочтительный рабочий стол
ПРЕДПОЧТИТЕЛЬНЫЙ=
если [ -f /etc/sysconfig/desktop]; тогда
    . /etc/sysconfig/рабочий стол
    если [ "$DESKTOP" = "GNOME" ]; тогда
        ПРЕДПОЧТИТЕЛЬНЫЙ="$GSESSION"
    Элиф [ "$DESKTOP" = "KDE" ]; тогда
        ПРЕДПОЧТИТЕЛЬНЫЙ="$STARTKDE"
    фи
фи

если [-n "$ ПРЕДПОЧТИТЕЛЬНЫЙ" ]; тогда
    выполнить "$ ПРЕДПОЧТИТЕЛЬНЫЙ"
фи

# теперь, если мы можем добраться сюда, либо файл рабочего стола отсутствует, либо
# или запрошенный рабочий стол не установлен.

если [ -n "$GSESSION" -a -f /usr/share/xsessions/gnome.desktop ]; тогда
    # по умолчанию запускаем GNOME.
    exec "$GSESSION" --session=gnome
Элиф [-n "$STARTKDE"]; тогда
    # если GNOME не установлен, попробуйте KDE.
    выполнить "$STARTKDE"
фи

# Мы также должны поддерживать сценарии /etc/X11/xinit/Xclients.d
XCLIENTS_D=/etc/X11/xinit/Xclients.d
if [ "$#" -eq 1 ] && [ -x "$XCLIENTS_D/Xclients.$1.sh" ]; тогда
    exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"
фи

# Отказоустойчивость.

# эти файлы остаются без дела TheNextLevel.
rm -f $HOME/Xrootenv.0

# Арх! Ничего хорошего не установлено. Вернуться к twm
{
    # господи, нет ни fvwm95, ни fvwm2;
    # вернуться к отказоустойчивым настройкам
    [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'

    если [ -x /usr/bin/xclock ] ; тогда
        /usr/bin/xclock -геометрия 100x100-5+5 &
    фи
    если [ -x /usr/bin/xterm ] ; тогда
        /usr/bin/xterm -геометрия 80x50-50+150 &
    фи
    если [ -x /usr/bin/firefox -a -f /usr/share/doc/HTML/index.html ]; тогда
        /usr/bin/firefox /usr/share/doc/HTML/index.html и
    фи
    если [ -x /usr/bin/twm ] ; тогда
        исполняемый файл /usr/bin/twm
    фи
}

Глупость в том, что после попытки запустить вторую vncсервер около 50 раз, обычно это работает один раз, когда я останавливаю и снова запускаю службу, она снова ничего не показывает, кроме курсора мыши.

Свободной памяти осталось много (около 5 гигов), места для хранения тоже много (около 100 гигов). Когда я редактирую свой ~/.vnc/xstartup файл, чтобы включить только файловый менеджер, он работает нормально каждый раз, проблема заключается в попытке запустить сеанс для нескольких пользователей.

Спасибо, что прочитали все это, я уже потерял бесчисленное количество часов, пытаясь отладить это без каких-либо (серьезных) улучшений.

ОБНОВЛЕНИЕ 1: После многих часов работы я все еще не заработал gnome. Отчаянные времена требуют отчаянных мер, поэтому я просто установил Xfce и сделал его красивее с помощью красивой темы и пакета значков. Он просто работал после того, как я его установил. Я удалил все ссылки на гномов из xstartup файлы и добавил startxfce4.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.