Вопрос или проблема
У меня установлен и работает TightVNC на виртуальном сервере Ubuntu 18.4, следуя этому руководству.
Сказано использовать nano и создать файл ‘unit’ под названием /etc/systemd/system/[email protected]
. Затем указываются содержимое файла, и я проверил и перепроверил, но когда я пытаюсь запустить сервис с помощью:
systemctl start vncserver@1
Я получаю ошибку, в которой говорится:
Job for [email protected] failed because the control process exited with error code.
Затем я запускаю:
systemctl status [email protected]
и получаю этот вывод:
● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2020-08-28 19:13:08 UTC; 12h ago
Aug 28 19:13:08 BradysApp systemd[1]: Starting Start TightVNC server at startup...
Aug 28 19:13:08 BradysApp vncserver[1232]: Can't find file /home/brady/.vnc/BradysApp:1.pid
Aug 28 19:13:08 BradysApp vncserver[1232]: You'll have to kill the Xtightvnc process manually
Aug 28 19:13:08 BradysApp systemd[1]: [email protected]: Control process exited, code=exited status=2
Aug 28 19:13:08 BradysApp systemd[1]: [email protected]: Failed with result 'exit-code'.
Aug 28 19:13:08 BradysApp systemd[1]: Failed to start Start TightVNC server at startup.
Мой файл unit выглядит так:
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=brady
Group=brady
WorkingDirectory=/home/brady
PIDFile=/home/brady/.vnc/%H:%i.pid
ExecStartPre=/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Пользователь brady
– мой нерутовый пользователь и работает нормально, так что это не проблема.
Есть какие-нибудь идеи или предложения, что может быть не так? Я полный новичок в Linux, работаю в веб-терминале Digital Ocean VPS.
На основании обсуждений в комментариях и чате, проблема была решена путем повторного запуска процедуры настройки после добавления пользователя, чей рабочий стол должен был быть доступен.
Параметр Group
должен быть установлен в группу в вашей системе. Это не то же самое, что ваше имя пользователя в общем случае. Вы можете использовать ll
(псевдоним для команды ls -l
), чтобы проверить, какая группа должна быть установлена.
Group
должен быть установлен в users
в примере ниже:
-rw------- 1 awen users 406 Sep 26 07:15 .Xauthority
-rw-r--r-- 1 awen users 1600 Apr 9 2020 .Xdefaults
-rw-r--r-- 1 awen users 80 Sep 23 10:22 .bash_aliases
-rw------- 1 awen users 8440 Sep 26 07:23 .bash_history
Ответ или решение
Настройка TightVNC как системной службы может быть сложной задачей, особенно для новичков в Linux. Давайте разберем вашу ситуацию и найдем возможные проблемы.
Проблемы в настройке
-
Ошибки при создании PID-файла:
- В выводе ошибок указано:
Can't find file /home/brady/.vnc/BradysApp:1.pid
. Это значит, что система не может найти или создать этот файл. - Убедитесь, что директория
/home/brady/.vnc/
существует и права на эту директорию соответствуют пользователюbrady
.
- В выводе ошибок указано:
-
Использование переменных в Unit-файле:
- Возможно, ошибка в синтаксисе переменной
%H:%i.pid
. Убедитесь, что вы правильно указываете место и формат переменной в файле службы.
- Возможно, ошибка в синтаксисе переменной
-
Параметры пользователя и группы:
- Вы использовали
brady
как имя группы, но это может быть вашим именем пользователя, а не группой. - Чтобы выяснить, какая группа должна быть указана, выполните команду
ls -l /home/brady/
и найдите вашу группу. Обычно это может бытьusers
.
- Вы использовали
-
Ошибка выполнения команды vncserver:
- Обратите внимание на команды
ExecStartPre
иExecStart
. Если vncserver не установлен в этом пути, необходимо убедиться, что путь к vncserver указан правильно. - Проверьте, удовлетворяют ли ваши команды нужные параметры и работают ли они корректно вручную.
- Обратите внимание на команды
-
Права доступа и зависимости:
- Убедитесь, что необходимые зависимости, такие как сетевые службы, уже запущены к моменту выполнения вашего Unit-файла. Параметр
After=syslog.target network.target
может нуждаться в корректировке в зависимости от конфигурации вашей системы.
- Убедитесь, что необходимые зависимости, такие как сетевые службы, уже запущены к моменту выполнения вашего Unit-файла. Параметр
SEO Оптимизация и Контекст
Для лучшего SEO, учтите следующие моменты:
- Используйте фразы, такие как "Настройка TightVNC на Ubuntu", "ошибка в systemd", и "PID-файл недоступен".
- Структурируйте ваш ответ так, чтобы он был полезным для пользователей, занимающихся подобной настройкой, например, обеспечив шаги по диагностике и исправлению ошибок.
Заключение
Следуя вышеуказанным рекомендациям, вы, вероятно, сможете исправить проблему с настройкой TightVNC как системной службы. Убедитесь, что права доступа, конфигурации и зависимости правильно согласованы. Если проблема сохраняется, просмотрите журналы ошибок для дополнительной информации. Использование команд journalctl -xe
может предоставить более детальные сведения об ошибках systemd.