Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

25.04.2009, 11:51

Vixie-Cron: nicht jeder Befehl wird ausgeführt

Hallo Cron-Experten,

folgender Fehler: das Script zum Ändern des Hintergrundbildes wird zwar ausgeführt (sehe den Befehl in /var/log/messages) aber das Hintergrundbild ändert sich nicht.
Ganz anders verhält sich der 2. Befehl (Datum in Datei schreiben). Dieser wird ebenfalls ausgeführt und schreibt auch schön das Datum in die Datei.

Woran kann es nun liegen das gedit das Hintergrund via cron job nicht ändern kann?
Der Benutzer user ist in der Datei /etc/cron.allow aufgeführt. In der Datei /etc/cron.deny steht all.

/etc/crontab:

Quellcode

1
2
*/1 * * *   	*   	user /bin/sh /home/user/random_wallpaper.sh
*/1 * * *   	*   	user /bin/date >> /home/user/date


Hatte die beiden Befehle auch in der benutzereigenen Crontab hinzugefügt > gleiches Ergebnis wie bei der globalen Crontab.

Hat jemand einen Tipp, was ich hier falsch mache oder was man noch probieren könnte?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »citoki« (29.04.2009, 18:27)


2

27.04.2009, 08:30

Da das Script gestartet wird, aber nicht das tut was Du willst, liegt es nicht am Cron sondern am Script.

Du hast beim schreiben Deines Scriptes darauf geachtet, das Deine Userumgebung nicht geladen wird?

Hinweis:
Wenn Du am Anfang Deines Scriptes ein

Quellcode

1
#!/bin/sh

Anfügst, könntest Du das Script auch starten ohne vorher den interpreter anzugeben, also in Deinem Falle:

Quellcode

1
*/1 * * *   	*   	user /home/user/random_wallpaper.sh
Meine Rechtschreibfehler sind gewollt und unterliegen dem Copyright des Verfassers, es sei denn, sie sind explizit unter die GPL gestellt .....

Außerdem sind sie ein Ausdruck der Persönlichkeit des Schreibers!

3

29.04.2009, 08:35

ah, danke! Das wusste ich noch nicht.

Ja im Script selbst steht in der ersten Zeile "#!/bin/bash". Das Script alleine funktioniert sehr gut, wenn es durch den Benutzer user ausgeführt wird. Heute Abend schreibe ich das Script noch mal hier mit rein. Vielleicht ist da doch noch ein Fehler drin, wenn man es mit cron ausführen möchte.

4

29.04.2009, 09:59

Hinwweis:
Beim Start eines Scriptes durch den Cron werden NICHT die Umgebungsvariablen geladen.

Also z.B. ein "cd ~" funktioniert nicht, da das Homeverzeichnis "~" nicht gesetzt wird.

Deshalb ist es relativ gut, wenn man nicht nur die Befehle sondern den Kompletten Pfad angiebt.

z.B.
anstatt svn ein /usr/bin/svn
anstatt mount ein /bin/mount
etc...
Meine Rechtschreibfehler sind gewollt und unterliegen dem Copyright des Verfassers, es sei denn, sie sind explizit unter die GPL gestellt .....

Außerdem sind sie ein Ausdruck der Persönlichkeit des Schreibers!

5

29.04.2009, 18:05

hmm also die Aufrufe hab ich entsprechend mit vollen Verzeichnisnamen angegeben. Das ursprüngliche Script stammt von http://www.mavit.org.uk/random-wallpaper/. Hier wird auch nur gesagt das man es beim Starten einbinden kann >> funktioniert auch tadellos.

Die Datei sieht nun folgendermaßen aus:

Quellcode

1
2
#!/bin/sh
/usr/bin/gconftool-2 --type string --set /desktop/gnome/background/picture_filename `/usr/bin/perl -e '@images = glob "/usr/share/backgrounds/tiles/*"; print $images[int rand $#images+1], "\n"'` --set /desktop/gnome/background/picture_options wallpaper


Auch wenn ich im Script vorher nochmal die PATH Variable setze, so wie sie in der /etc/crontab ist, funktioniert es nicht.

Siehst du hier noch Probleme im Script? Vieleicht funktioniert der Perl Aufruf generell innerhalb cron nicht?!

6

29.04.2009, 18:22

ahh wie ich grade bei den ubuntu Kollegen gelesen habe, liegt es daran, dass gconftool-2 von cron gar nicht richtig gestartet werden kann.

Die Lösung ist hier beschrieben:
https://bugs.launchpad.net/ubuntu/+source/gconf/+bug/285937

Wenn man die Zeile:

Quellcode

1
export $(xargs -n 1 -0 echo </proc/$(pidof gnome-session)/environ | grep -Z DBUS_SESSION_BUS_ADDRESS=)
vor dem Ausführen von gconftool-2 im Script (welches aufgerufen wird von Cron) hinzufügt, funktioniert der Aufruf.