LINUX.ORG.RU

Сообщения avovana

 

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

Форум — Desktop

Здравствуйте, дорогие форумчане!

Задача - запускать приложение с интерфейсом при старте системы и запускать, если оно вдруг упадет.

У меня Debian 9.5.

Сначала пробовал systemd. Переделал простой пример.

Не получилось. journalctl выдал:

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

Приписывал в скрипт sudo, gksudo - не запускается всё-равно. Не могли бы помочь, почему не хочет подключиться к X-Server?

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

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

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

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

 , , ,

avovana
()

RSS подписка на новые темы