Запуск приложения X11 (Firefox) через crontab

Запуск приложения X11 (Firefox) через crontab

Я хочу написать crontab, который открывает Firefox каждую минуту (просто для проверки, я знаю, что это не имеет смысла). Моя проблема в том, что даже если crontab активен, ничего не происходит. Вот как выглядит мой crontab:

SHELL=/bin/bash
PATH=~/bin:/usr/bin:bin
* * * * * export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

Есть идеи, почему это не работает?

решение1

export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

Просто взглянув на команду cron выше, я могу понять, почему она не будет работать. Использование команды exportследующее:

export name[=word]...

В оболочках POSIX оставшиеся слова, следующие за ними, export DISPLAY=:0.0будут рассматриваться как другие переменные оболочки, которые должны быть экспортированы в среду, а не команды, которые будут запущены. POSIX (выпуск 7, издание 2018 г.) также определяет, чтоимядолжно быть

слово, состоящее исключительно из символов подчеркивания, цифр и букв алфавита из переносимого набора символов.

Это означает, что имена переменных оболочки не могут содержать такие символы, /поэтому попытка включить их /usr/bin/firefoxв список имен переменных для экспорта приведет к возникновению ошибки с сообщением типа not a valid identifierили bad variable name.


Кроме того, xhostкоманда используется неправильно. Запустите xhostее саму, чтобы увидеть, нужно ли вам добавить учетную запись пользователя в качестве разрешенного пользователя. Это должно быть выполнено только один раз и не должно быть запланировано cron.


Если только нет какого-либо другого механизма, препятствующего подключению программ к серверу X-дисплея, приведенные выше строки можно просто заменить на:

DISPLAY=:0.0
* * * * * /usr/bin/firefox

Это должно запускать новое окно Firefox каждую минуту. Также нет необходимости указывать SHELLпеременную окружения – и поскольку вы указываете полный путь к firefoxисполняемому файлу, нет необходимости устанавливать PATHи переменную.


Смотрите также:Спецификация POSIX дляexport

Связанный контент