У меня есть скрипт .sh, который загружает фотографию с сервера японского спутника и устанавливает ее в качестве фоновой картинки. Я поместил его в список автозагрузки, но как мне запускать его каждые 5 минут автоматически?
Попробуйте cronmaker.com, там вы можете сделать cron-выражения и поместить его с помощью crontab -e
Мы Борг,
2
Меняется ли картина каждые 5 минут? Попробуйте использовать интервал, который создает меньше ненужной нагрузки на целевом сервере. Или убедитесь, что вы загружаете только если файл действительно изменился.
til_b
1
Кстати, а что за ссылки на космические фоны?
Богдан_троценко
Ответы:
14
Ленивый вариант
Если вам нужен простой способ, и вам не нужно выяснять, какую переменную среды установить:
Убедитесь, что ваш сценарий включает в себя шебанг
Сделайте это исполняемым
Добавьте следующее в Startup Applications:
/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необходимо установить переменную окружения.
Для этого добавьте следующий раздел в начале вашего скрипта (ниже шебанга):
Не уверен, что он работает с ограниченными переменными окружения cron, но давайте посмотрим, упоминает ли OP, что он работает :)
Jacob Vlijm
1
@AleksanderMahnyov Пожалуйста, отредактируйте свой вопрос, чтобы добавить сценарий, трудно сказать, не видя содержания .. возможно DISPLAY(и / или XAUTHORITY) проблема ..
heemayl
1
@ Kartagis Cron не может обрабатывать секунды, также вы пытаетесь делать это часами, что по-прежнему синтаксически неправильно ..
heemayl
2
Мне нравится этот метод, а не "ленивый метод", потому что я знал о cron, но мне нужно было пройти курс повышения квалификации. Это именно то, что я сделал, большое спасибо! :)
Ответы:
Ленивый вариант
Если вам нужен простой способ, и вам не нужно выяснять, какую переменную среды установить:
Добавьте следующее в Startup Applications:
Dash> Автозагрузка приложений> Добавить. Добавьте команду:
объяснение
Если вы запускаете сценарий из собственной среды (например, из окна терминала или из автозагрузки), будет установлен ряд переменных среды.
cron
однако ваш скрипт запускается с ограниченным набором переменных среды.Поскольку ваш скрипт без сомнения использует
gsettings
команду:чтобы установить обои, почти наверняка команда сломается при запуске из
cron
.Обратная сторона «ленивого решения» чисто теоретическая. Команда, которая спит практически непрерывно, ничего не значит для вашей системы.
Дополнительная информация; альтернативно
Читая этот пост , и исходя из прошлого опыта, я почти уверен, что
DBUS_SESSION_BUS_ADDRESS
необходимо установить переменную окружения.Для этого добавьте следующий раздел в начале вашего скрипта (ниже шебанга):
Тогда вы сможете успешно запустить его
cron
.Вы могли бы, однако, очень хорошо сохранить шум и выбрать ленивый вариант.
источник
cpu 0.0%
каком налоге идет речь?Поместите это в свой
crontab
.Откройте ваш
cron
стол по:Теперь добавьте:
Не забудьте заранее сделать скрипт исполняемым.
Поскольку ваш сценарий зависит от X, вероятно, будет хорошей идеей добавить
DISPLAY
его в среду сценария:Замените
:0
на ваш фактическийDISPLAY
(можно найтиecho $DISPLAY
из интерактивного сеанса).При необходимости вы также можете добавить
XAUTHORITY
переменную окружения:Опять вы можете найти значение по
echo $XAUTHORITY
.источник
DISPLAY
(и / илиXAUTHORITY
) проблема ..