Страница 1 из 1

Отображение приложения, запущенного через пользовательское задание cron

Добавлено: 10 мар 2018, 22:20
madesta
Linux Mint xfce 18

Была идея реализации ежедневной задачи:
1. Запуск приложения Dropbox на синхронизацию (получение/отправка) файлов в папках совместного доступа.
2. Команда паузы на 20 минут, в течение которых процесс Dropbox выполняет свою задачу.
3. Остановка Dropbox.

Было создан исполняемый файл daily-dropbox пользовательского задания cron:

Код: Выделить всё

#!/bin/bash
dropbox start
sleep 15
rm /home/user/.config/autostart/dropbox.desktop
#команда rm удаляет автоматически создаваемый автозапуск Dropbox при старте системы
sleep 1200
dropbox stop
Задание cron с именем user сохраняется в /var/spool/cron/crontabs и успешно редактируется через crontab -e
Задание отрабатывается в соответствии с указанным расписанием и процессы dropbox, sleep, а также daily-dropbox наблюдаются через диспетчер задач.
В процессе отработки задания файлы в Dropbox синхронизируются, что проверено по факту появления новых и удаления старых файлов, загруженных/удалённых через другую учётку Dropbox на другом компьютере.
После отработки команды dropbox stop все указанные процессы из диспетчера задач исчеают.

Вопрос: отсутствие отображения значка Dropbox на панели является следствием запуска Dropbox через cron или в файле задания чего-то не хватает? При запуске команды dropbox start (dropbox start -i) через терминал или скрипт sh значок Dropbox отображается.

Отображение приложения, запущенного через пользовательское задание cron

Добавлено: 10 мар 2018, 22:34
slant
Программа через cron запускается вне окружения рабочего стола, она не может просто так с ним взаимодействовать. И организовать это взаимодействие хоть в принципе и возможно, но довольно сложно - чтобы без глюков. Если так нужен значок (и взаимодействие с ним) - проще просто засунуть ваш скрипт в автозапуск пользователя в DE. Или просто позволить дропбоксу его родной автозапуск, а вашим скриптом тоже из автозапуска в DE убивать его через заданное время.

Отображение приложения, запущенного через пользовательское задание cron

Добавлено: 11 мар 2018, 11:08
Chocobo
Вкратце - приложуху надо отправить в соответсвующую X-сессию
export DISPLAY=:0 && /path/to/daily-dropbox

Отображение приложения, запущенного через пользовательское задание cron

Добавлено: 11 мар 2018, 11:25
slant
... и если повезет - заработает. :) Зато может перестать запускаться, в моменты, когда юзер не залогинен.
Некоторые приложения таким образом надо через dbus-launch запускать, некоторые еще через пару трюков. И в случае отсутствия активной сессии пользователя в момент запуска они тоже себя по разному ведут... В общем - то еще развлечение.

Отображение приложения, запущенного через пользовательское задание cron

Добавлено: 12 мар 2018, 13:12
madesta
Выражаю свою признательность откликнувшимся.
Вероятно, при формулировании своего вопроса мне следовало бы уточнить, что запуск пользовательского задания cron предусматривается выполнять в течение активного сеанса работы пользователя в системе.
Конструкция export DISPLAY=:0 && команда сработала и была опробована на последовательностях команд с использованием уведомлений zenity, а также запуске приложений GUI, например firefox "http://news.mail.ru"