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?
Wypróbuj cronmaker.com, tam możesz tworzyć wyrażenia cron i umieszczać je w crontab -e
Jesteśmy Borg
2
Czy obraz zmienia się nawet co 5 minut? Spróbuj użyć interwału, który tworzy mniej niepotrzebnego obciążenia na serwerze docelowym. Lub upewnij się, że pobierasz tylko wtedy, gdy plik jest naprawdę zmieniony.
til_b
1
Przy okazji, jaki jest adres URL tła kosmicznego?
bohdan_trotsenko
Odpowiedzi:
14
Leniwa opcja
Jeśli chcesz w łatwy sposób i nie musisz sprawdzać, którą zmienną środowiskową ustawić:
Upewnij się, że twój skrypt zawiera shebang
Zrób to
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"
Wyjaśnienie
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.
Dodatkowe informacje; alternatywnie
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):
Nie jestem pewien, czy działa z ograniczonymi zmiennymi środowiskowymi crona, ale zobaczmy, czy OP wspomina, że działa :)
Jacob Vlijm
1
@AleksanderMahnyov Edytuj swoje pytanie, aby dodać skrypt, trudno powiedzieć, nie widząc treści .. DISPLAYXAUTHORITY
prawdopodobnie
1
@Kartagis Cron nie radzi sobie z sekundami, a także próbujesz robić przez wiele godzin, co jest nadal błędne składniowo.
heemayl
2
Uwielbiam tę metodę, a nie „leniwą metodę”, ponieważ wiedziałem o cronie, ale potrzebowałem trochę odświeżającego kursu. Właśnie to zrobiłem, wielkie dzięki! :)
Odpowiedzi:
Leniwa opcja
Jeśli chcesz w łatwy sposób i nie musisz sprawdzać, którą zmienną środowiskową ustawić:
Dodaj następujące aplikacje do aplikacji startowych:
Dash> Aplikacje startowe> Dodaj. Dodaj polecenie:
Wyjaśnienie
Jeśli uruchomisz skrypt ze swojego środowiska (np. Z okna terminala lub z aplikacji startowych), zostanie ustawiona liczba zmiennych środowiskowych.
cron
jednak uruchamia skrypt z ograniczonym zestawem zmiennych środowiskowych.Ponieważ twój skrypt bez wątpienia używa
gsettings
polecenia: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.
Dodatkowe informacje; alternatywnie
Czytając ten post , a także z doświadczeń z przeszłości, jestem prawie pewien, że
DBUS_SESSION_BUS_ADDRESS
należy ustawić zmienną środowiskową.Aby to zrobić, dodaj następującą sekcję na początku skryptu (poniżej shebang):
Powinieneś być w stanie pomyślnie uruchomić go z
cron
.Możesz jednak bardzo dobrze uratować zgiełk i wybrać opcję leniwą.
źródło
cpu 0.0%
jakim podatku mówimy?Włóż to do swojego
crontab
.Otwórz swój
cron
stół przez:Teraz dodaj:
Nie zapomnij wcześniej wykonać skryptu.
Ponieważ twój skrypt zależy od X, prawdopodobnie dobrym pomysłem będzie dodanie go
DISPLAY
do środowiska skryptu:Zamień
:0
na rzeczywistyDISPLAY
(można go znaleźć wecho $DISPLAY
sesji interaktywnej).W razie potrzeby możesz również dodać
XAUTHORITY
zmienną środowiskową:Ponownie możesz znaleźć wartość według
echo $XAUTHORITY
.źródło
DISPLAY
XAUTHORITY