Запуск.sh каждые 5 минут
У меня есть скрипт.sh, который загружает фотографию с сервера японского спутника и устанавливает ее в качестве фоновой картинки. Я поместил его в список автозагрузки, но как мне запускать его каждые 5 минут автоматически?
2 ответа
Ленивый вариант
Если вам нужен простой способ, и вам не нужно выяснять, какую переменную среды установить:
- Убедитесь, что ваш сценарий включает в себя шебанг
- Сделайте это исполняемым
Добавьте следующее в Startup Applications:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Dash> Автозагрузка приложений> Добавить. Добавьте команду:
/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
,
Вы могли бы, однако, очень хорошо сохранить шум и выбрать ленивый вариант.
Поместите это в свой 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
,