DS109 gnuplot aus crontab funktioniert nicht

Status
Für weitere Antworten geschlossen.

ag390734

Benutzer
Mitglied seit
02. Sep 2009
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen

kurz meine technischen Details:
- DS109, DSM 2.2, ipkg installiert + Pakete gnuplot, perl, gcc installiert (neusten Versionen)

Mein Problem:
ich habe mir ein perlscript geschrieben, das zum einen einige ASCII files erzeugt und zum anderen auch gnuplot aufruft, um mir automatisch ein Bild als png zeichnen zu lassen. Das läßt sich entweder über ein gnplot-scriptfile und einem System call oder durch eingabe der gnuplot-Befehle direkt im perlscript realisieren. Führe ich das perlscript von der Komandozeile aus, klappt alles wunderbar. Textdateien und das gewünschte Bild werden auf der Platte erzeugt. Wird das script über den crontab gestartet, werden nur die ASCII-Dateien geschrieben und das Bild nicht.
Rich (BBCode):
DS109> /usr/bin/perl /volume1/web/perl/test.pl
Rich (BBCode):
*/1     *       *       *       *       root    /usr/bin/perl /volume1/web/perl/test.pl

gnuplot direkt, d.h. ohne perl, aufzurufen liefert das selbe Ergebnis, von Komandozeile geht alles, der exakt selbe Befehl im crontab funktioniert nicht.
Rich (BBCode):
DS109> /opt/bin/gnuplot /volume1/web/perl/test.gnu
Rich (BBCode):
*/1     *       *       *       *       root    /opt/bin/gnuplot /volume1/web/perl/test.gnu

Pfadprobleme können ausgeschlossen werden, da ich wie man sehen kann sowohl in der crontab-Datei den Pfad explizit setze, als auch im perl script nur absolute Pfade auch für gnuplot angebe. Wo werden eigentlich evtl. Fehler vom cron geloggt?

Hat jemand ähnliche Beobachtungen evtl. auch mit anderen programmen gemacht? Das ist echt schade, dass das nicht geht. Für jeden Kommentar und sei er noch so banal bin ich dankbar

Gruß Andreas
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Speichere mal per Skript dein Shell-Environment in eine Datei und lass dann das Skript durch den crond ausführen und schau dir die Differenz der Ausgaben an. Vielleicht fehlen ja noch Shell-Variablen oder sind anders gesetzt.

Itari
 

ag390734

Benutzer
Mitglied seit
02. Sep 2009
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hallo itari

danke für die schnelle Antwort. ich habe mal beide outputs angehängt. Es gibt unterschiede, nur habe ich leider keine Ahnung ob einer und wenn welcher Eintrag dafür verantwortlich ist. Wie könnte ich die denn ändern für den crontab?

von Komandozeile
Code:
USER=root
SSH_CLIENT=xxx.xxx.xxx.xxx yyyy 22
MAIL=/var/mail/root
HOME=/root
OLDPWD=/root
SSH_TTY=/dev/ttyp1
PAGER=more
LOGNAME=root
TERM=xterm
PATH=/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
SHELL=/bin/ash
PWD=/
SSH_CONNECTION=xxx.xxx.xxx.xxx 
PGDATA=/volume1/@database/pgsql

aus cron heraus
Code:
USER=root
OLDPWD=/dev
HOME=/root
TERM=vt102
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
SHELL=/bin/sh
PWD=/root
TZ=CET-1CEST,M3.5.0,M10.5.0/3

Vielen Dank für deine Hilfe

Gruß Andreas
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Kannst die fehlenden oder zu ändernden Shell-Variablen einfach im Shell-Skript eintragen, z.B.

------
export TERM=xterm
export SHELL=/bin/ash
...
dein Skript
------

Ob und welche du da setzen musst, kann ich dir leider nicht sagen. Ich wollte dich nur auf den Unterschied von dem Environment, welches du interaktiv verwendest zu dem, welches der crond verwendet, hinweisen.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
cron scheint /opt nicht im Pfad zu haben
 

ag390734

Benutzer
Mitglied seit
02. Sep 2009
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hi zusammen

in der Tat war es ein Pfadproblem. Naja kein Wunder wenn man blind ist :rolleyes: Im Perlskript haben alle Pfade ein "/" vorneweg gehabt, nur bei gnuplot hatte ich sie aus welchen Gründen auch immer nicht mit dazu geschrieben. Und der cron läuft im /root Verzeichnis, während ich das Perlskript immer aus / aufgerufen habe. Eigene Blödheit, die mich einen halben Tag gekostet hat. Danke für eure Hilfe

Bis denno

Andreas
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat