Cron-Jobs tun nicht das was sie sollen

  • Hallo Profis,

    bisher hab ich alles hinbekommen aber nun kriech ich langsam die Wand hoch.


    Meine Cron-Jobs tun nicht das was sie sollen


    Raspberry PI 2, Raspbian VERSION="8 (jessie)"


    Wenn ich beisher so ein Problem hatte, dann hab ich das auf das grundsätzliche runtergebrochen, getestet und dann (auch immer) den Fehler gefunden.


    Hier geht aber gar nix:



    Ich hab mal einfach ein Shellscript gebastelt mit dem namen „tecro1“ :


    #!/bin/bash

    date>>/home/pi/datum.log


    liegt in „/home/pi


    Es macht nix anderes, als den das/die aktuelle/s Datum/Uhrzeit in die Datei „datum.log“ zu schreiben. Und das tut es auch.

    Nur so zum testen.

    Der User ist eben „pi“ und auch darunter macht der Zweizeiler was er soll. Auch wenn ich das Ding mit „sudo“ starte geht’s. Aufrufen tu ich das über die Shell (bzw. mit putty vom WIN-PC aus auf dem Raspi) mit „./tecro1“ bzw. eben „sudo ./tecro1“. Alles geht.


    Versuchsweise hab ich die nun in die Crontab eingetragen.

    Crontab öffenen mit: „sudo crontab -e

    Einfüge am ende: „*/1 * * * * root /home/pi/tecro1


    ich hab das root auch schon durch „pi“ ersetzt, vorneweg mit „/bin/bash/“, usw. usw. usw.


    Dahinter nochmal „#“ und eine Leerzeile.


    Trotzdem macht das nicht es soll. Es fast die Datei ned an.

    Nicht ums verreckn (wie wir hier sagen)


    In „var/log/syslog“ steht folgender Eintrag drin:

    Jan 5 16:18:01 raspi1 CRON[1803]: (root) CMD (root /home/pi/tecro1)


    (Das script wird also gestartet)


    Anfang hatt ich in der syslog noch folgendes drin (passend):

    CRON[8380]: (CRON) info (No MTA installed, discarding output)

    Durch viel Internet-lesen, hab ich gelernt, dass Raspbian da wohl eine Fehlermeldung verschicken will, aber ned kann da der MTA fehlt. (Was ist das für ein Fehler)


    Dann hab ich folgendes probiert: in der Crontab die Fehlerausgabe mit „2>error.log“ umgebogen. Es tauchte dann tatsächlich ein Fehlerfile auf. Da steht folgendes drin:

    /bin/sh: 1: pi: not found


    hm…?



    Wo liegt mein Fehler.


    Vielen Dank für Eure Hilfe.

  • Es ist ja eine user (root) crontab, da wird der user (anders als in der systemweiten crontab) nicht benötigt.


    Wie ist die Ausgabe von:

    Code
    ls -la /home/pi/tecro1

    ?

    The most popular websites without IPv6 in Germany.

  • Hallo Bayernkarlo


    tecro1 braucht um das Datum auszulesen keine sudo-Rechte daher besser unter crontab -e eintragen.

    sudo crontab -e sollte nur für Scripte sein die auch root-Rechte benötigen


    in der crontab dann folgendes eintragen:


    */1 * * * * /bin/sh /home/pi/tecro1 &

    Das sollte dann das Script jede Minute ausführen.


    Grüsse Apop

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

  • Erstmal Merci für Eure schnelle Hilfe.

    Zum Ergebniss:

    Ist die Datei tecro1 ausführbar?

    Eigentlich schon! "./tecro1" startet die Datei und tut was sie soll. "tecro1" allerdings ned.


    Code
    ls -la /home/pi/tecro1

    ?


    -rwxr-xr-x 1 pi pi 37 Jan 5 15:52 /home/pi/tecro1



    Hab ich gmacht! Auch aus der "sudo crontab -e" auskommentiert.




    Nur:
    Sie tut immer noch ned das was sie soll.....

  • Was mir jetzt noch aufgefallen ist, sollte es immer noch nicht funktionieren,

    als Shebang gibst du Bash an, in der Crontab gibst du sh an. Ob das Fehler verursacht weiß ich nicht, aber ansonsten mal zum testen angleichen.


    EDIT: Und hierauf immer achten

    Wichtig ist, dass am Ende der Tabelle ein Kommentar oder eine Leerzeile stehen. Ähnlich wie die fstab muss die crontab mit einer Leerzeile enden!

    EDIT EDIT: Was eventuell noch Probleme machen könnte ist das date. Geb hierfür mal den absoluten Pfad von date an. Mittels which date wird der dieser angezeigt.

  • Das & sagt aus dass das Script im Hintergrund als backgroundprozess ausgeführt werden soll. Siehe hier.

    Einige meiner Scripts haben auch rumgezickt als ich es ohne & eingetragen habe. Leider fehlt mir da das Verständnis/Wissen warum dies genau der Fall ist.

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

  • Sieht gut aus! Kann es an dem "&" am ende gelegen haben?

    Teste mal auch mit:

    Code
    * * * * * /home/pi/tecro1 > /dev/null 2>&1

    The most popular websites without IPv6 in Germany.