Как запустить скрипт командной оболочки в bash каждый час с помощью cron?

Я поместил эту строку в 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
2
задан 27 July 2014 в 22:33

1 ответ

Я предполагаю свое первое предположение о пути 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, но хорошо работает автономный.

5
ответ дан 27 July 2014 в 22:33

Другие вопросы по тегам:

Похожие вопросы: