ubuntuusers.de

Shell Script bricht als Cronjob ab

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

ACERds

Anmeldungsdatum:
21. Oktober 2009

Beiträge: Zähle...

Hallo, vorab einige Infos. Ich arbeite unter Ubuntu 9.04. Der Sinn des Scipt liegt darin, dass es auf dem Server nach einer Präsentation sucht. Falls es eine findet, wird diese local verschoben und gestartet. Das script wird über crontab jede Minute ausgeführt. (Deshalb auch der Punkt

killall soffice.bin

Das Script (was gleich folgt) funktioniert einwandfrei wenn ich es manuell über

sudo sh fertigeSchleife

lade.

Wenn es allerdings über den crontab gestartet wird, wird die verschobene Präsentation NICHT gestartet. Er findet eine Präsentation, verschiebt sie auch brav local aber staret sie eben nicht.

Script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash -x


# kopiere *.odp, umbenennen in current.odp

if [ -f /mnt/Ordner/*.odp ]
then
echo	"Datei vorhanden"
        killall soffice.bin
	mv /mnt/Ordner/*.odp /mnt/Ordner/new/current.odp

/usr/bin/ooffice -impress -norestore -show "/mnt/Ordner/new/current.odp"

else echo "Datei nicht vorhanden"

fi

exit 0

Vielen Dank schonmal für sämtliche Denkansätze !!!

pinguino

Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

sehr wahrscheinlich hast du keinen Eintrag im /etc/sudoers. Mit visudo kannst du das editieren. Im crontab muß du das Skript mit sudo aufrufen.

ACERds

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2009

Beiträge: 4

hi pinguino,

script sollte als root ausgeführt werden:

auszug aus der crontab:

*/1 *	* * *	root	sh -x /home/display-kflur/Desktop/fertigeSchleife

/etc/sudoers sagt mir leider noch nix, werd mich gleich mal da reinlesen! Danke schonmal für den Ansatz ...

pinguino

Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

wenn du mit dem sudoers fertig bist, versuche im crontab folgendes:

1
sudo /home/display-kflur/Desktop/fertigeSchleife

ACERds

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2009

Beiträge: 4

so, beides versucht und hat leider nicht funktioniert. Ich dachte bis jetzt das es an den Rechten lag. Hab aber sämtliche Dateien mal mit

sudo chmod 777 datei

versehen. Hat ebenfalls nichts gebracht.

pinguino

Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

editiere als erstes /etc/sudoers

1
sudo -s visudo

dann schreibst du nach:

1
2
# User privilege specification
root    ALL=(ALL) ALL

das

1
deruser  derNamemeinesPCs = NOPASSWD: /home/display-kflur/Desktop/fertigeSchleife

Dann kannst du im crontab folgendes schreiben:

1
sudo /home/display-kflur/Desktop/fertigeSchleife

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17607

Wohnort: Berlin

Weil crontab nichtACERds schrieb:

Wenn es allerdings über den crontab gestartet wird, wird die verschobene Präsentation NICHT gestartet. Er findet eine Präsentation, verschiebt sie auch brav local aber staret sie eben nicht.

Wenn Du ein Programm, das X11 benutzt, aus cron etc. aufrufen willst, sind besondere Vorkehrungen zu treffen. Der Wikiartikel erklärt wie's geht: http://wiki.ubuntuusers.de/cron#Fenster-einer-Anwendung-oeffnet-sich-nicht

ACERds

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2009

Beiträge: 4

die Befehlserweiterung

DISPLAY=:0.0

hat leider ebenfalls nicht geholfen. Ich hab dann mal das kleine Porgramm GNOME SCHEDULE ausprobiert. Ist eine grafische Umgebung, die im Prinzip nix anderes macht, als einen cronjob anzulegen. Ebenfalls erfolglos. Das größte Problem besteht darin, dass die aktuelle Präsentation nicht jede Minute abgebrochen werden darf. Das script soll nur jede Minute nach einer neuen Datei suchen.

Langsam geb ich die Hoffnung auf, schade...

Trotzdem vielen Dank für eure Hilfe!!!

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17607

Wohnort: Berlin

unter Xubuntu brauche ich auch die XAUTHORITY, und export

# m 	h  	dom	mon	dow	command
*	*	*	*	*	export XAUTHORITY=/home/stefan/.Xauthority && export DISPLAY=:0.0 && /home/stefan/tmp/praes.sh >> /home/stefan/cron.log 2>&1

, und nicht expoert, wie ich feststellte, nachdem ich

tail /var/log/syslog 

auf cron-Fehler prüfte.

Der Part ab >> leitet dann die Ausgaben und Fehler, die im script sind (bei mir preas.sh) in eine separate Logdatei - auch praktisch, solange es nicht fehlerfrei läuft, danach wirft man's raus.

Die Zeit * * * ... steht für jede Minute (erster Stern) - eine Schrittweite von /1 zusätzlich anzugeben ist überflüssig.

NoKurth

Avatar von NoKurth

Anmeldungsdatum:
18. August 2006

Beiträge: 430

Hallo ACERds.
ACERds schrieb:

[...] Das größte Problem besteht darin, dass die aktuelle Präsentation nicht jede Minute abgebrochen werden darf. Das script soll nur jede Minute nach einer neuen Datei suchen.
[...]

Dann solltest du das

1
killall soffice.bin

aus dem if-Zweig des Skripts entfernen. Denn immer wenn eine neue Datei gefunden wird, wird soffice.bin gekillt, dann alle neue gefundenen Dateien nach "current.odp" verschoben und die Präsentation neu gestartet.
Etwas komisch sieht der mv-Befehl schon aus. Was passiert, wenn mehrere odp-Dateien gefunden werden? Welche erhält dann den neuen Namen "current.odp"? Ich glaube, die Logik vom Skript (unabhängig vom Anzeigeproblem mit X11) ist noch nicht ganz ausgereift.

Gruß
Norman

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17607

Wohnort: Berlin

Klapppt das jetzt eigentlich?

Antworten |