Почему x0vncserver не запускается при загрузке?

В своем комментарии я упомянул три преимущества функций:

  1. Их легче тестировать и проверять на правильность.

  2. Функции можно легко повторно использовать (получить) в будущих сценариях

  3. Они нравятся вашему боссу.

И никогда не недооценивайте важность числа 3.

Я хотел бы затронуть еще одну проблему:

... так что возможность произвольно менять порядок выполнения - это не то, что мы вообще делал бы. Например, вы бы не захотели внезапно поместить declare_variables после walk_into_bar , это могло бы нарушить работу.

Чтобы получить преимущество разбиения кода на функции, нужно попытаться сделать функции как можно более независимыми. Если walk_into_bar требует переменной, которая больше нигде не используется, тогда эта переменная должна быть определена и сделана локальной для walk_into_bar . Процесс разделения кода на функции и минимизации их взаимозависимостей должен сделать код более понятным и простым.

В идеале функции должны легко тестироваться по отдельности. Если из-за взаимодействия их нелегко протестировать, это признак того, что им может быть полезен рефакторинг.

2
21.11.2017, 21:36
2 ответа

Немного поздно, но я тоже только что наткнулся на эту проблему.

Проблема в том, что x0vncserver нуждается в сеансе X для входа в систему для вашего пользователя, поэтому вы должны обеспечить две вещи:

  1. Ваш пользователь должен быть настроен для автоматического входа в систему

  2. Поместите спящий режим в команду ExecStart, чтобы рабочий стол мог запуститься и войти в систему до того, как служба x0vncserverпопытается запуститься:

    ExecStart=/usr/bin/sh -c 'sleep 3 && /usr/bin/x0vncserver -display :0 -rfbport 5900 -passwordfile /home/<your_user_name>/.vnc/passwd &'

Сон помог мне, и теперь мой x0vncработает.

4
27.01.2020, 21:53

Поскольку x0vncserverзапускается только после сеанса xsession, а у меня среда LXDE, проще создать файл script.sh, как показано ниже

#!/bin/bash
x0vncserver -display :0 -rfbport 5900 -passwordfile ~/.vnc/passwd

и сделайте его исполняемым с помощью sudo chmod +x script.shи добавьте строку в файл ~/.config/lxsession/LXDE/autostart, как показано ниже

path_to_the_script_file/script.sh

и x0vncserverзапускаются при запуске сеанса рабочего стола LXDE, и это то, что мне нужно.

4
27.01.2020, 21:53

Теги

Похожие вопросы