У меня есть скрипт .sh, который загружает фотографию с сервера японского спутника и устанавливает ее в качестве фоновой картинки. Я поместил его в список автозагрузки, но как мне запускать его каждые 5 минут автоматически?
У меня есть скрипт .sh, который загружает фотографию с сервера японского спутника и устанавливает ее в качестве фоновой картинки. Я поместил его в список автозагрузки, но как мне запускать его каждые 5 минут автоматически?
Ответы:
Если вам нужен простой способ, и вам не нужно выяснять, какую переменную среды установить:
Добавьте следующее в 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.
Вы могли бы, однако, очень хорошо сохранить шум и выбрать ленивый вариант.
cpu 0.0%каком налоге идет речь?
Поместите это в свой 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.
DISPLAY(и / или XAUTHORITY) проблема ..