Установка cron для запуска сценария оболочки: случайные обои с веб-страницы

Я написал сценарий оболочки, который загружает случайные обои с веб-страницы и устанавливает его в качестве фона каждые 5 часов. Вот сценарий:

#!/bin/bash

countervar=1;
finish=0;
cd /home/guinness/.rwallpaper/
if [ -f counter ]
then
    countervar=`cat counter`
fi

for (( i=$countervar; c<=2000000; i++ ))
do
   echo $i > "counter"
   if [ ! -f wallpaper-$i.jpg ]
   then
    wget "http://wallpapers.wallbase.cc/rozne/wallpaper-$i.jpg"

    if [ -f wallpaper-$i.jpg ]
    then
        gsettings set org.gnome.desktop.background picture-uri "file:///home/guinness/.rwallpaper/wallpaper-$i.jpg"
        exit
    fi
   fi
done

Если я запускаю этот скрипт, он работает как шарм. Я использую cron для запуска этого каждые 5 часов. Проблема в том, что он работает каждые 5 часов и успешно загружает следующее изображение, но не устанавливает его в качестве обоев. Может ли кто-нибудь сказать мне, что может быть проблемой?

1
задан 11 January 2014 в 20:29

1 ответ

Проблема, с которой вы сталкиваетесь, почти наверняка заключается в том, что часть переключения фона вашего сценария зависит от переменных среды из вашей X-сессии. Cron не устанавливает каких-либо переменных среды, поэтому это нарушит эту часть скрипта.

Чтобы обойти эту проблему, вы можете поместить скрипт в цикл while спящим примерно пять часов, а затем вызовите ваш скрипт в такое место, как /etc/X11/Xsession.d/my_script или ~ / .xprofile

1
ответ дан 24 May 2018 в 13:07
  • 1
    Я думал об этом решении, но обычно функция сна останавливает целую нить ?. И, кроме того, я не хочу запускать скрипт вручную каждый раз, когда я включаю компьютер. Так будет ли возникать эта проблема, если я установлю этот скрипт в качестве начальной программы? – DalekSupreme 11 January 2014 в 20:12
  • 2
    ~ / .xprofile и /etc/X11/Xsession.d/xxx запускаются автоматически, поэтому вам не придется запускать скрипт вручную. Вы можете запустить сценарий в фоновом режиме, добавив " & amp; " в bash. Таким образом, в вашем ~ / .xprofile вы можете добавить строку: " while true; do / path / to / my_script; сон 999999; done & amp; " И это будет запускать ваш скрипт один раз так часто. – xyrix 11 January 2014 в 20:50

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

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