Как запустить приложение с графическим интерфейсом из cron?

18

Мне нужно запустить Java-апплет из Firefox. Проблема в том, что мне нужно запустить этот Firefox из cron. Если я запускаю из командной строки и она работает нормально, но когда положить команду в cron, это не удалось:

*/1 * * * * firefox http://domain.com/iqms/packetloss/iqmspacket2.html
Фадаби Нави
источник
1
Вы можете использовать Java-библиотеку Selenium, если вам нужно больше функций, чем просто ее открытие.
Övünç Metin
Вы также можете использовать Selenium с python, что проще для скриптов.
ESala

Ответы:

25

Cron работает в среде, которая ничего не знает о диспетчере отображения ( $DISPLAYне установлена). Ваше окно терминала, в котором вы тестировали, имеет этот набор для него. Если вы попробуете это в «реальном» терминале или через SSH, вы увидите, что он сломался.

Если у вас запущен только один X-сервер, то можно указать только отображение:

* * * * *    DISPLAY=:0 firefox ...

Вы могли бы, вероятно, приложить больше усилий к тому, чтобы понять, под каким дисплеем он находится, а не предполагать, что это, :0но это, вероятно, будет работать большую часть времени.

Если вам просто нужно что-то много перезагружать, посмотрите на Tab Auto Reload или похожие плагины Firefox.

Оли
источник
Я нашел этот ответ, но все еще не запускает Firefox. После нескольких поисков я обнаружил, что мне нужно работать как действительный пользователь вместо root. * * * * * «DISPLAY =: 0.0 / usr / bin / firefox -new-window x.com/iqms/packetloss/iqmspacket2.html »
Фадаби Нави,
1
@fadabiNawi Более простой способ управления состоял бы в том, чтобы установить линию cron в crontab правильного пользователя. Войдите в систему, как вы хотите, иcrontab -e
Оли
7

Я нашел этот ответ, который я ищу в дополнение к Оли:

После нескольких поисков я обнаружил, что мне нужно работать как действительный пользователь вместо root.

* * * * * su fadabi -c "DISPLAY=:0.0 /usr/bin/firefox -new-window x.com/iqms/packetloss/iqmspacket2.html"; 

TQ

Фадаби Нави
источник
Это помогло, большое спасибо! Просто примечание: полный путь к Firefox обязателен, я этого не осознавал, и это не сработало
aexl