Ich habe ein .sh-Skript, das ein Foto vom japanischen Satellitenserver herunterlädt und als Hintergrundbild festlegt. Ich habe es in die Startliste aufgenommen, aber wie führe ich es alle 5 Minuten automatisch aus?
Ich habe ein .sh-Skript, das ein Foto vom japanischen Satellitenserver herunterlädt und als Hintergrundbild festlegt. Ich habe es in die Startliste aufgenommen, aber wie führe ich es alle 5 Minuten automatisch aus?
Antworten:
Wenn Sie den einfachen Weg suchen und nicht herausfinden müssen, welche Umgebungsvariable festgelegt werden soll:
Fügen Sie Startanwendungen Folgendes hinzu:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Dash> Startanwendungen> Hinzufügen. Fügen Sie den Befehl hinzu:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Wenn Sie das Skript in Ihrer eigenen Umgebung ausführen (z. B. in einem Terminalfenster oder in Startanwendungen), wird eine Reihe von Umgebungsvariablen festgelegt. cron
Führt Ihr Skript jedoch mit einem begrenzten Satz von Umgebungsvariablen aus.
Da Ihr Skript zweifellos den folgenden gsettings
Befehl verwendet:
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
Um das Hintergrundbild festzulegen, wird der Befehl mit ziemlicher Sicherheit unterbrochen, wenn er ausgeführt wird cron
.
Der Nachteil von "der faulen Lösung" ist rein theoretisch. Ein Befehl, der praktisch ununterbrochen schläft, bedeutet für Ihr System nichts .
Beim Lesen dieses Beitrags und aufgrund früherer Erfahrungen bin ich mir ziemlich sicher, dass die DBUS_SESSION_BUS_ADDRESS
Umgebungsvariable festgelegt werden muss.
Fügen Sie dazu den folgenden Abschnitt am Anfang Ihres Skripts hinzu (unter dem Shebang):
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Dann sollten Sie es erfolgreich ausführen können cron
.
Sie könnten jedoch sehr gut die Hektik retten und die Option faul wählen.
cpu 0.0%
welche Steuer sprechen wir?
Legen Sie es in Ihre crontab
.
Öffnen Sie Ihren cron
Tisch durch:
crontab -e
Fügen Sie nun hinzu:
*/5 * * * * /path/to/script.sh
Vergessen Sie nicht, das Skript vorher ausführbar zu machen.
Da Ihr Skript von X abhängt, ist es wahrscheinlich eine gute Idee, das DISPLAY
zur Umgebung des Skripts hinzuzufügen :
*/5 * * * * DISPLAY=:0 /path/to/script.sh
Ersetzen Sie :0
durch Ihre tatsächliche DISPLAY
(kann durch echo $DISPLAY
interaktive Sitzung gefunden werden).
Bei Bedarf können Sie auch die XAUTHORITY
Umgebungsvariable hinzufügen :
*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh
Wieder können Sie den Wert durch finden echo $XAUTHORITY
.
DISPLAY
XAUTHORITY