У меня есть скрипт .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
) проблема ..