Служба VNC работала нормально до недавнего отключения электроэнергии.
Когда я пытаюсь бежать
systemctl start vncserver@:1.service
он дает сообщение как
Job for vncserver@:1.service failed because a configured resource limit was exceeded. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.
и когда я бегу
systemctl status vncserver@:1.service
он дает следующий вывод
● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2018-08-06 11:48:03 +03; 50s ago
Process: 1238 ExecStart=/usr/sbin/runuser -l abdullah -c /usr/bin/vncserver %i -geometry 1920x1080 (code=exited, status=255)
Process: 1224 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Aug 06 11:47:56 RESysLab-Server_Machine systemd[1]: Starting Remote desktop s...
Aug 06 11:48:03 RESysLab-Server_Machine systemd[1]: vncserver@:1.service: con...
Aug 06 11:48:03 RESysLab-Server_Machine systemd[1]: Failed to start Remote de...
Aug 06 11:48:03 RESysLab-Server_Machine systemd[1]: Unit vncserver@:1.service...
Aug 06 11:48:03 RESysLab-Server_Machine systemd[1]: vncserver@:1.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
журнал -xe
включает следующие сообщения:
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: pam_unix(runuser-l:session): session opened for user abdullah by (uid=0)
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Warning: RESysLab-Server_Machine:1 is taken because of /tmp/.X11-unix/X1
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Remove this file if there is no X server RESysLab-Server_Machine:1
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: A VNC server is already running as :1
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Warning: RESysLab-Server_Machine:1 is taken because of /tmp/.X11-unix/X1
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Remove this file if there is no X server RESysLab-Server_Machine:1
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Warning: RESysLab-Server_Machine:2 is taken because of /tmp/.X11-unix/X2
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Remove this file if there is no X server RESysLab-Server_Machine:2
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Warning: RESysLab-Server_Machine:3 is taken because of /tmp/.X11-unix/X3
Aug 06 11:58:32 RESysLab-Server_Machine runuser[4805]: Remove this file if there is no X server RESysLab-Server_Machine:3
Aug 06 11:58:35 RESysLab-Server_Machine runuser[4805]: New 'RESysLab-Server_Machine:6 (abdullah)' desktop is RESysLab-Server_Machine:6
Aug 06 11:58:35 RESysLab-Server_Machine runuser[4805]: Starting applications specified in /home/abdullah/.vnc/xstartup
Aug 06 11:58:35 RESysLab-Server_Machine runuser[4805]: Log file is /home/abdullah/.vnc/RESysLab-Server_Machine:6.log
Aug 06 11:58:35 RESysLab-Server_Machine runuser[4805]: pam_unix(runuser-l:session): session closed for user abdullah
Aug 06 11:58:35 RESysLab-Server_Machine systemd[1]: PID file /home/abdullah/.vnc/RESysLab-Server_Machine:1.pid not readable (yet?) after start.
Aug 06 11:58:35 RESysLab-Server_Machine systemd[1]: Failed to start Remote desktop service (VNC).
Что мне делать, чтобы решить эту проблему?
Чтобы автоматизировать удаление файлов остаточных сокетов, как упоминалось в принятом ответе, я получил это /etc/systemd/system/vncserver@.service
файл:
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
Environment="display_temp=%i"
ExecStartPre=-/bin/sh -c "/usr/bin/vncserver -kill %i > /dev/null 2>&1"
ExecStartPre=-/bin/sh -c "/bin/rm -f /tmp/.X11-unix/X$${display_temp:1} /tmp/.X$${display_temp:1}-lock"
ExecStart=/usr/sbin/runuser -l usr1cv8 -c "/usr/bin/vncserver %i"
PIDFile=/home/usr1cv8/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1'
[Install]
WantedBy=multi-user.target
Основные отличия от оригинального конфига:
systemd
спецификатор %i
как переменная окружающей среды display_temp
, так как нам нужно избавиться от двоеточия на следующем шаге (:1
-> 1
)vncserver -kill
снимаем розетку под /tmp/.X11-unix/
каталог и заблокировать файл в /tmp/
. Чтобы использовать подстановку переменных среды, нам нужно избежать знака доллара следующим образом: $$
(см. этот ответ для получения более подробной информации: https://unix.stackexchange.com/a/216786)Я нашел решение: удаление файла X1 через rm -f /tmp/.X11-unix/X1
и перезапуск VNC-сервера работал.