Здравствуйте, дорогие форумчане!
Задача - запускать приложение с интерфейсом при старте системы и запускать, если оно вдруг упадет.
У меня 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.