Mam skrypt .sh, który pobiera zdjęcie z serwera japońskiego satelity i ustawia je jako obraz tła. Umieściłem go na liście startowej, ale jak mam go uruchamiać co 5 minut automatycznie?
Mam skrypt .sh, który pobiera zdjęcie z serwera japońskiego satelity i ustawia je jako obraz tła. Umieściłem go na liście startowej, ale jak mam go uruchamiać co 5 minut automatycznie?
Odpowiedzi:
Jeśli chcesz w łatwy sposób i nie musisz sprawdzać, którą zmienną środowiskową ustawić:
Dodaj następujące aplikacje do aplikacji startowych:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Dash> Aplikacje startowe> Dodaj. Dodaj polecenie:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"Jeśli uruchomisz skrypt ze swojego środowiska (np. Z okna terminala lub z aplikacji startowych), zostanie ustawiona liczba zmiennych środowiskowych. cronjednak uruchamia skrypt z ograniczonym zestawem zmiennych środowiskowych.
Ponieważ twój skrypt bez wątpienia używa gsettingspolecenia:
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
aby ustawić tapetę, prawie na pewno polecenie zostanie przerwane po uruchomieniu cron.
Minusem „leniwego rozwiązania” jest czysto teoretyczny. Polecenie, które śpi praktycznie nieprzerwanie, nic nie znaczy dla twojego systemu.
Czytając ten post , a także z doświadczeń z przeszłości, jestem prawie pewien, że DBUS_SESSION_BUS_ADDRESSnależy ustawić zmienną środowiskową.
Aby to zrobić, dodaj następującą sekcję na początku skryptu (poniżej shebang):
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Powinieneś być w stanie pomyślnie uruchomić go z cron.
Możesz jednak bardzo dobrze uratować zgiełk i wybrać opcję leniwą.
cpu 0.0%jakim podatku mówimy?
Włóż to do swojego crontab.
Otwórz swój cronstół przez:
crontab -e
Teraz dodaj:
*/5 * * * * /path/to/script.sh
Nie zapomnij wcześniej wykonać skryptu.
Ponieważ twój skrypt zależy od X, prawdopodobnie dobrym pomysłem będzie dodanie go DISPLAYdo środowiska skryptu:
*/5 * * * * DISPLAY=:0 /path/to/script.sh
Zamień :0na rzeczywisty DISPLAY(można go znaleźć w echo $DISPLAYsesji interaktywnej).
W razie potrzeby możesz również dodać XAUTHORITYzmienną środowiskową:
*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh
Ponownie możesz znaleźć wartość według echo $XAUTHORITY.
DISPLAYXAUTHORITY