Я поместил эту строку в crontab:
1 * * * * DISPLAY=:0.0 /usr/bin/gnome-terminal -e /home/user/Desktop/mltpl
Сценарий исполняемый.
Если вставить эту команду в терминал, то есть строку без звездочек, она прекрасно работает:
DISPLAY=:0.0 /usr/bin/gnome-terminal -e /home/user/Desktop/mltpl
Я пытался:
sudo service cron restart
Но проблема не устранена. Как я могу заставить cron
запускать эту команду ежечасно?
Обновить. Получил работу с ROOT crontab:
1 * * * * DISPLAY=:0 XDG_RUNTIME_DIR=/run/user/1000 XAUTHORITY=/home/user/.Xauthority /usr/bin/gnome-terminal -e /home/user/Desktop/mltpl
Я предполагаю свое первое предположение о пути DISPLAY
переменная обрабатывается, неправильное. Я думаю проблема, так или иначе связанная с cron
использование неинтерактивной оболочки. Сценарий тестирования с помощью большого количества read
циклу не удалось работать. Однако, когда я протестировал путем открытия новой вкладки:
* * * * * DISPLAY=:0 /usr/bin/gnome-terminal --tab -e /home/murukesh/test.sh
это хорошо работало.
Согласно этому вопросу о SU и этому сообщению Форумов Ubuntu, Вы можете иметь к также export
$DISPLAY
переменная или использование env
:
1 * * * * env DISPLAY=:0.0 /usr/bin/gnome-terminal -e /home/user/Desktop/mltpl
(или)
1 * * * * export DISPLAY=:0.0 && /usr/bin/gnome-terminal -e /home/user/Desktop/mltpl
Это, возможно, из-за оболочки, используемой cron
быть sh
и нет bash
(см. то, Что различие между набором, экспортом и ENV и когда я должен использовать каждого?). Также взгляните на Сценарий, не работает через crontab, но хорошо работает автономный.