Выполнение .sh каждые 5 минут

У меня есть .sh сценарий, который загружает фотографию с сервера японского спутника и устанавливает его как фоновое изображение. Я выразился в список запуска, но как я выполняю его каждый, как, 5 минут, автоматически?

11
задан 24 February 2016 в 04:01

2 ответа

Ленивая опция

, Если Вы хотите простой способ и избегаете необходимости узнавать который переменная среды установить:

  • Удостоверяются, что Ваш сценарий включает хижину
  • , Делают это, исполняемый файл
  • Добавляет следующее для Запущения Приложений:

    /bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
    

    Тире> Приложения Запуска> Добавляют. Добавьте команду:

    /bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
    

Объяснение

, Если Вы запускаете скрипт от своей собственной среды (например, из окна терминала или из Приложений Запуска), много переменных среды будут установлены. cron однако запускает Ваш скрипт с ограниченным набором переменных среды.
, Так как Ваш сценарий несомненно использует эти gsettings команда:

gsettings get org.gnome.desktop.background picture-uri <wallpaper>

для установки обоев почти наверняка команда повредится, когда выполнено от cron.

оборотная сторона "ленивого решения" является чисто теоретической. Команда, которая спит практически непрерывно, означает ничто к Вашей системе.

Дополнительная информация; альтернативно

Чтение это сообщение , и на основе событий в прошлом я вполне уверен DBUS_SESSION_BUS_ADDRESS, переменная среды должна быть установлена.

Для этого добавляют следующий раздел в начале Вашего сценария (ниже хижины):

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

Затем необходимо смочь успешно выполнить его от cron.

Вы могли однако очень хорошо сохранить давку и выбрать ленивую опцию.

14
ответ дан 23 November 2019 в 03:51

Вставьте его Ваш crontab.

Откройте Ваш cron таблица:

crontab -e

Теперь добавьте:

*/5 * * * * /path/to/script.sh

Не забывайте делать исполняемый файл сценария заранее.


Поскольку Ваш сценарий зависит от X, вероятно, будет хорошая идея добавить DISPLAY к среде сценария:

*/5 * * * * DISPLAY=:0 /path/to/script.sh

Замена :0 с Вашим фактическим DISPLAY (может быть найден echo $DISPLAY от интерактивной сессии).

В случае необходимости можно добавить XAUTHORITY переменная среды также:

*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh

Снова можно найти значение echo $XAUTHORITY.

23
ответ дан 23 November 2019 в 03:51

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

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