Qt: периодически запускать окно сообщения с помощью crontab в Ubuntu

Я пытаюсь запустить окно сообщения Qt каждую минуту. Я добавил строку в crontab для запуска исполняемого файла программы Qt и перенаправил вывод ошибки в файл в моем домашнем каталоге. Нет проблем с программой Qt, которая запускает окно сообщения, потому что я тестировал ее, но когда я пытаюсь запустить ее с помощью crontab, возникает следующая ошибка:

QXcbConnection: Could not connect to display
Aborted (core dumped)

Я проверил это в Интернете и нашел ветку, которая может оказаться полезной: https://unix.stackexchange.com/questions/148945/could-not-connect-to-display-in-one-user-account/149026#149026
Я считаю, что первый ответ дает решение, но оно не ясно.
Он предлагает использовать x11 для совместного использования рабочего стола и xauth для добавления мер безопасности, но не указывает, как их настроить. У меня уже установлен xauth, но ошибка сохраняется. Любые идеи о том, как решить эту проблему?


person S.E.K.    schedule 11.09.2015    source источник
comment
Как насчет вставки строки crontab?   -  person alesegdia    schedule 12.09.2015
comment
*/1 * * * * /home/salwa/computing/cpp/horloge 2›› /home/salwa/cron.log   -  person S.E.K.    schedule 12.09.2015


Ответы (2)


Я думаю, что среда DISPLAY отсутствует. Я предлагаю вам обернуть ваше приложение скриптом-оболочкой (назовем его horloge.sh):

#!/bin/sh
DISPLAY=:0
export DISPLAY
/home/salwa/computing/cpp/horloge

Затем поместите horloge.sh в свой crontab. Не забудьте сделать chmod u+x horloge.sh, чтобы скрипт стал исполняемым.

person JvO    schedule 25.09.2015
comment
Это сработало! Большое спасибо, JvO, я очень ценю это. - person S.E.K.; 26.09.2015

Убедитесь, что пользователь, который запускает ваше приложение в строке crontab, — это вы. В противном случае у него может не быть разрешений на использование X-сервера.

person alesegdia    schedule 11.09.2015
comment
Спасибо, Alesegdia, за ответ. На самом деле я новичок и впервые использую Qt. Я пользователь, который создал строку в crontab и запускает приложение (я имею в виду, что я делаю все, войдя в тот же сеанс пользователя). Не могли бы вы дать мне объяснение термина X-сервер для начинающих? - person S.E.K.; 12.09.2015
comment
Конечно. Вы знаете о оконных менеджерах? то есть: Gnome, Kde... если да, то это клиенты, которые нужно запускать внутри X-сервера. Обычно ваша ОС автоматически настроена на запуск одного сервера при старте, и там запускается выбранный вами клиент. Вы также можете вставить свою строку crontab для завершения. - person alesegdia; 12.09.2015