a
25 сентября 2018 г. 8:51

Автозапуск и авторестарт Qt Gui Application в Linux

Qt, Linux, autorun

Здравствуйте, дорогие форумчане! Сделал специальную тему для такого вопрос.


У меня Debian 9.5.

Моё приложение не получилось запустить с помощью утилиты systemd.

Писал, что

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display


По мере изучения вопроса я понял, что systemd может стартовать и рестортовать в случае падения программы без GUI.

Посмотрел в сторону обычной автозагрузке - Desktop Entry Files. Статья есть на этом сайте.

Автозагрузка прошла успешно. Но мне нужен еще и рестарт программы при её закрытие, крушение.


Посмотрел в сторону supervisor . Думал, что она меня спасет. Но нет. После переделывания тестового примера и попытки запуска получил тоже:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display.


Вот мой скрипт:


Файл: /usr/local/bin/long.sh                       

#!/bin/bash
/opt/control_block/b/bin/control_block

Вот кофиг:

Файл: /etc/supervisor/conf.d/long_script.conf

[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log

Не могли бы помочь, почему не хочет подключиться к X-Server?

Вручную запустить могу. Переменная DISPLAY установлена.


Здесь говорится о такой проблеме. Приводится код для устранения. Но и упоминается, что это:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display

всего-лишь warning.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
2

Добрый день!

Я перенёс ваш вопрос в раздел Linux, он здесь будет более к месту.

Что касается самого вопроса, то возможно, что нужно запускать от имени определённого пользователя.

Например так подправить

[program:long_script]
command=/usr/local/bin/long.sh
user=nobody
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log

Либо с каким-то иным пользователем, но не от имени рута стартовать вашу программу


0
a
  • 25 сентября 2018 г. 12:22

Не получается... Решил пробовать скрипт, выполняемый при загрузке. В скрипте вечный цикл по старту программы.

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
25 мая 2019 г. 16:20
Андрей Янкович

C++ - Тест 001. Первая программа и типы данных

  • Результат:93баллов,
  • Очки рейтинга8
m
19 мая 2019 г. 1:49
mahhaki

Qt - Тест 001. Сигналы и слоты

  • Результат:78баллов,
  • Очки рейтинга2
S
17 мая 2019 г. 13:14
SunBro

Qt - Тест 001. Сигналы и слоты

  • Результат:42баллов,
  • Очки рейтинга-8
Последние комментарии
21 мая 2019 г. 20:10
Дмитрий

Приветствую! Я думаю дойдёт и до этого, но пока изучать его у меня нет желания.
20 мая 2019 г. 19:20
Евгений Легоцкой

Добрый день! Вы не думали разместить репозиторий проекта на GitHub?
P.
18 мая 2019 г. 14:03
PELMYACH .

Спасибо большое! Вскоре буду разбираться!
18 мая 2019 г. 9:13
Евгений Легоцкой

Добрый день! Отнимать значение общего счётчика можно в деструкторе класса кнопки QDynamicButton::~QDynamicButton(){ ResID--;} При этом я бы ещё переустанавливал значения вс...
P.
14 мая 2019 г. 22:33
PELMYACH .

Здравствуйте!А не подскажите, как можно при удалении какой либо кнопки, у щётчика отнять значение?Дабы например четвёртой кнопке соответствовал ID 4, а не 5 скажем
Сейчас обсуждают на форуме
24 мая 2019 г. 6:48
Евгений Легоцкой

Если там будут только перечисления внутри namespace, то жа, достаточно будет заголовочного файла
24 мая 2019 г. 6:28
Андрей Янкович

работает любой http сервер, и можно использовать обсалютно любой портпример <RemoteRepositories> <Repository> <Url>http://178.124.160.6:3030/A/B&l...;
23 мая 2019 г. 14:40
Михаиллл

Попробовал сделать этот запрос по http и получил json файл. request.setUrl(QUrl("https://jsonplaceholder.typicode.com/todos/1")); Как Вы думаете, почему https не работает и как это и...
23 мая 2019 г. 10:42
Михаиллл

Спасибо, помогло.
23 мая 2019 г. 6:31
Евгений Легоцкой

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

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB