Ich versuche, mein Hintergrundbild mithilfe des von Indrajith Indraprastham vorgeschlagenen Skripts in ein zufälliges Bild zu ändern : Wie ändere ich den Desktop-Hintergrund über die Befehlszeile in Unity?
Wenn ich das Skript über ein Terminalfenster ausführe, ändert sich das BG einwandfrei. Wenn es jedoch über Cron ausgeführt wird, wird folgende Fehlermeldung gesendet:
(Prozess: 21901): dconf-WARNING **: Änderungen an dconf konnten nicht festgeschrieben werden: Fehler beim Laichen der Befehlszeile 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr': Untergeordneter Prozess mit Code 1 beendet
Ich würde mich über Vorschläge freuen.
Antworten:
Bearbeiten von Einstellungen von cron; fehlende Umgebungsvariable
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.Um
gsettings
erfolgreich zu bearbeitencron
, müssen Sie dieDBUS_SESSION_BUS_ADDRESS
Umgebungsvariable festlegen . Sie können dies tun, indem Sie Ihrem Skript zwei Zeilen hinzufügen, wie hier (und unten) beschrieben.Ihr Skript, einschließlich der Einstellung der erforderlichen Variablen
Das Skript von hier , das so bearbeitet wurde, dass es die
DBUS_SESSION_BUS_ADDRESS
Umgebungsvariable enthält, lautet dann:Verwandte: Alle 5 Minuten .sh ausführen
quelle
PID=$(pgrep -f 'gnome-session' | head -n1)
!DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
mit$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
Da grep zu den Variablennamen erhält. Quellepgrep gnome-session
kann mehr als eine PID zurückgeben, wenn mehrere Benutzer am System angemeldet sind (jede laufende Gnome-Sitzung). VielleichtEUID=$(id --real --user)
undPID=$(pgrep --euid $EUID gnome-session)
wäre eine Möglichkeit, nur die PID zu erhalten, die der Gnome-Sitzung des aktuellen Benutzers zugeordnet ist.