Script läuft nicht per Crontab

  • Hallo,


    ich komme nicht weiter. Ich habe ein Script auf meiner DM800se (mit OE1.6), welches beim direkten ausführen tadellos funktioniert, wenn ich es aber crontab aufrufe, wird es zwar gestartet (ich lasse zum Test ein File schreiben) aber seiner eigentlichen Aufgabe kommt es nicht nach. An sich funktioniert es, aber leider nicht im Cron. Habt ihr eine Idee woran das liegen könnte ?



    Die Anzeige von Date in das file.txt funktioniert, mehr leider nicht.


    In /var/log/messages sehe ich zur Laufzeit:
    May 22 20:51:01 dm800se cron.err crond[5843]: USER root pid 7421 cmd /media/hdd/dyndns/dyndns.sh


    Das ist mir auch schon mit anderen Scripten so gegangen, ich versteh es nicht.

  • Quote

    Originally posted by netdom
    An sich funktioniert es, aber leider nicht im Cron. Habt ihr eine Idee woran das liegen könnte ?


    Sowas liegt eigentlich immer daran, dass Cron nur minimale Suchpfade (PATH) setzt, woraufhin dann diverse Kommandos nicht gefunden werden.


    Bash
    #!/bin/sh
    #set -x
    /bin/date  > /media/hdd/dyndns/file.txt


    Wenn Du hier stattdessen sowas wie

    Code
    exec >/media/hdd/dyndns/log-`date +%Y%m%d%H%M%S`.txt 2>&1


    hinklebst, hast Du ein vernünftiges Log. Wenn Du dann noch Dein obiges set -x (oder gleich set -xv) scharf machst, auch mit Debug.


    Code
    DATA=$(/usr/cat /media/hdd/dyndns/update.api | ...


    /usr/cat? Siescheer dat?


    Quote

    Das ist mir auch schon mit anderen Scripten so gegangen, ich versteh es nicht.


    Es ist eigentlich immer ein Pfad - oder etwas, das beim Versuch, die Pfade absolut zu machen, schief ging. BTW, man kann den PATH auch im Script als allererstes aufblasen, dann spart man sich das rumfriemeln an jedem einzelnen Befehl :winking_face:


    HTH,
    Andre.

  • man kann auch einfach den PATH aus der /etc/profile in den crontab eintragen, solange man keine scripte oder binaries in exotischen Pfaden ablegt


    Code
    root@dm800se:~# crontab -l | grep PATH
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    root@dm800se:~#