Вопрос или проблема
после установки, создания пользователя, редактирования и т. д., при попытке запустить службу я получаю (после удаления .Xfiles из tmp, предложение от @SivaPrasath)
systemctl start vncserver@:1.service
Job for vncserver@:1.service failed because the control process exited with error code.
See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.
systemctl
говорит:
[root@localhost ~]# systemctl status vncserver@:1.service
● vncserver@:1.service - Служба удаленного рабочего стола (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled)
Active: failed (Result: protocol) since Tue 2018-05-15 19:26:13 -03; 1min 36s ago
Process: 4284 ExecStart=/usr/sbin/runuser -l r_vnc -c /usr/bin/vncserver :1 -geometry 1280x1024 (code=exited, status=0/SUCCESS)
Process: 4282 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
May 15 19:26:10 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)...
May 15 19:26:13 localhost.localdomain systemd[1]: vncserver@:1.service: PID file /home/r_vnc/.vnc/localhost.localdomain:1.pid not readable (yet?) after start: Permission denied
May 15 19:26:13 localhost.localdomain systemd[1]: Failed to start Remote desktop service (VNC).
May 15 19:26:13 localhost.localdomain systemd[1]: vncserver@:1.service: Unit entered failed state.
May 15 19:26:13 localhost.localdomain systemd[1]: vncserver@:1.service: Failed with result 'protocol'.
journalctl
говорит:
- Unit UNIT has begun starting up.
May 15 16:42:15 localhost.localdomain systemd[13394]: Received SIGRTMIN+24 from PID 13453 (kill).
May 15 16:42:15 localhost.localdomain systemd[1]: Stopped User Manager for UID 1002.
-- Subject: Unit [email protected] has finished shutting down
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit [email protected] has finished shutting down.
May 15 16:42:15 localhost.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=user@1002 comm="systemd" exe="/usr/lib/systemd/systemd" hostname
May 15 16:42:15 localhost.localdomain systemd[1]: Removed slice User Slice of r_vnc.
-- Subject: Unit user-1002.slice has finished shutting down
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit user-1002.slice has finished shutting down.
Как исправить ошибку?
Если вы неожиданно завершили работу vncserver или он завершился с ошибкой, пожалуйста, прочитайте /var/log/messages, и вы можете найти файлы .X с ошибками, как показано ниже.
Сначала убедитесь, что процесс Xvnc не работает.
Aug 13 12:11:11 www runuser: Warning: www.example.com:2 is taken because of /tmp/.X2-lock
...
Aug 13 12:12:52 www runuser: Warning: www.example.com:2 is taken because of /tmp/.X22-unix/X2
затем удалите
# rm -f /tmp/.X2-lock
# rm -f /tmp/.X22-unix/X2
И установите пароль VNC для пользователя, если он не был установлен. После установки пароля вы должны иметь возможность запустить VNC сервер, как ожидалось.
# su - <user name>
$ vncpasswd
и перезапустите ваш vncserver.
# systemctl restart vncserver@:2.sevice
Ответ или решение
Ошибка "error starting tigervnc-server code 98" в Fedora 27 связана с неудачным запуском VNC-сервера из-за конфликта портов или файлов .Xlock. Давайте разберемся с этой проблемой, изучив возможные причины и предлагая решения.
Теория
Ошибка Code 98 обычно указывает на то, что попытка запуска VNC-сервера заканчивается неудачно из-за того, что порт, на котором он должен запуститься, уже занят. Это может произойти, если на этом порту уже работает другая сессия VNC или процесс Xvnc не был корректно завершен ранее.
VNC-серверы используют X-серверы для своей работы, каждому из которых присвоен уникальный номер дисплея, начиная с 1. Этот дисплей использует порт 5900+N, где N — номер дисплея. Таким образом, для дисплея :1 используется порт 5901.
Также существуют файлы блокировок в директории /tmp
(например, /tmp/.X1-lock
), которые предотвращают повторные попытки запуска процесса на одном и том же дисплее.
Пример
В вашем случае ошибка возникает после попытки запустить сервис с помощью команды:
systemctl start vncserver@:1.service
Система сообщает, что подтягивает служебный файл, но не удается прочитать PID-файл по причине "Permission denied" (отказано в доступе). Это указывает либо на проблемы с правами доступа, либо на уже работающий процесс, блокирующий доступ.
В выводе journalctl
можно также заметить ошибки, связанные с файлами .X⟩!lock и X22-unix. Эти сообщения говорят о том, что VNC-сервер не может начать работу из-за существующих блокировок.
Применение
Для решения этой проблемы можно последовать таким шагам:
-
Проверка работающих процессов VNC:
Убедитесь, что предыдущие процессы Xvnc не работают. Сделайте это с помощью команды:ps aux | grep Xvnc
Если есть активные процессы, завершите их:
kill -9 <PID of the process>
-
Удаление устаревших файлов блокировки:
Очистите файлы блокировок, чтобы исключить конфликты с портами:rm -f /tmp/.X1-lock rm -f /tmp/.X11-unix/X1
-
Установка пароля VNC пользователя:
Убедитесь, что для пользователя установлен пароль:su - <имя пользователя> vncpasswd
Это необходимо выполнить, так как без пароля запуск будет невозможен.
-
Проверка прав доступа:
Убедитесь, что VNC-сервер может создать PID-файл. Проверьте его права доступа:ls -l /home/<имя пользователя>/.vnc
Если они недостаточны, измените их:
chown <имя пользователя>:<группа> /home/<имя пользователя>/.vnc chmod 755 /home/<имя пользователя>/.vnc
-
Перезапуск службы:
Попробуйте снова запустить службу VNC-сервера:systemctl restart vncserver@:1.service
-
Дополнительные шаги отладки:
Если проблема не решена, обратитесь к логам для получения более детальной информации:journalctl -xe
Обратите внимание на специфичные ошибки или предупреждения, которые могут помочь в диагностике.
Следуя этим шагам, вы сможете исправить ошибку Code 98 и успешно запустить TigerVNC-сервер. Если проблема продолжается, возможно, стоит рассмотреть обновление до более новой версии Fedora или TigerVNC, так как это может упростить использование механизмов системы через более современные исправления и улучшения в ПО.