[Erledigt] Script aus crontab startet nicht

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • [Erledigt] Script aus crontab startet nicht

    Hallo, ich möchte über '/etc/cron/crontabs/root' ein Script starten, was es nicht macht.
    Der Verweis zum Script schreibt erst einmal mit 'echo > "PlaPLa" > /etc/cron/crontabs/plapla.txt'

    Wenn ich in der Konsole 'sh /etc/cron/crontabs/del22' aufrufe klappt es ja auch wie gewollt.
    Nach mehreren zeitlichen Änderungen sollte es ja derzeit von März-Juni alle 5 Minuten starten (spoiler).
    Hatte z.B. auch schon (* 50 * * * /etc/cron/crontabs/del22 = jede Stunde 50 Minuten)

    Display Spoiler

    root@vuuno4kse:~# chmod -R 755 /etc/cron/crontabs
    root@vuuno4kse:~# crontab -l
    * /5 * 3-6 * /etc/cron/crontabs/del22
    root@vuuno4kse:~#

    Script
    Display Spoiler

    #!/bin/bash
    #d=$(date +%y%m%t)
    d=$(date '+%Y-%m-%d %H:%M:%S')
    echo $d > /etc/cron/crontabs/del22.txt
    Gruss
    schnorpser

    The post was edited 2 times, last by schnorpser ().

  • Hmm; zuerst einmal: das Verzeichnis /etc/cron/crontabs ist für die Crontab-Einträge gedacht, nicht dafür, dass du da Scripten oder Logs ablegst. Dürfte aber nicht dein Fehler sein, solltest du aber trotzdem nicht machen.

    Ich denke, dein Crontab-Eintrag ist einfach falsch: meiner Meinung nach fehlt da ein "*" bei dem Intervall-Eintrag, der wohl "*/5" heißen sollte. Der Rest sollte eigentlich passen.
  • Noch ein Hinweis:

    Du schreibst, dass Du auf der Kommandozeile das Kommando sh /etc/cron/crontabs/del22 getestet hast.
    In die Crontab hast Du aber eingetragen /etc/cron/crontabs/del22.
    Das ist ein Anderes Kommando...

    Beim ersten mal wird als Kommando die Shell sh aufgerufen, die das Script /etc/cron/crontabs/del22 ausführen soll.
    In der Crontab rufst Du das Script /etc/cron/crontabs/del22 direkt als Kommando auf.
    Dabei wird es dann ausgeführt von dem "Hash-Bang"-Kommando #! in der ersten Zeile des Scripts.
    Dort hast Du /bin/bash eingetragen.
    Tatsächlich aufgerufen wird vom Crontab-Eintrag also nicht die Shell sh, sondern /bin/bash /etc/cron/crontabs/del22.

    Wenn Du das Script auf der Kommandozeile testen möchtest, solltest Du es genau so aufrufen, wie Du es in der Crontab verwendest.

    The post was edited 2 times, last by RickX ().

  • Noch ein Hinweis zum Hinweis - wo du es gerade erwähnt hast:

    Beliebter Fehler bei Shell-Scripten, die zwar mit "sh ..." gestartet werden können, aber direkt ohne das sh nicht, ist dass sie mit WIndows-Zeilenenden abgespeichert wurden. Das Betriebssystem sucht dann nach einem Programm "/bin/bash\r" welches es im Filesystem nicht gibt, deswegen streiken Scripten dann gerne. Nur noch so als weiterer Gedanke.
  • Hallo ich melde mich noch einmal.

    Ich habe ja in /etc/cron/crontabs/root zwei Einträge und der erste wird gestartet.

    Nun habe ich - versuchsweise - die Reihenfolge getauscht. Nun wird zwar der o.g. gestartet, aber der andere auch nicht.

    Darf hier nur EIN Eintrag sein????

    RickX wrote:

    Wenn Du das Script auf der Kommandozeile testen möchtest, solltest Du es genau so aufrufen, wie Du es in der Crontab verwendest.
    Sorry, was sollte ich beim Crontab besser eintragen, statt #!/bin/bash?

    rdamas wrote:

    Noch ein Hinweis zum Hinweis - .......... mit WIndows-Zeilenenden abgespeichert wurden. Das Betriebssystem sucht dann nach einem Programm "/bin/bash\r" welches es im Filesystem nicht gibt, deswegen streiken Scripten dann gerne. Nur noch so als weiterer Gedanke.
    Ich habe unter Ubuntu gespeichert, nicht Windows.

    Edit hgdo: Bitte nicht mehrere Beiträge hintereinander erstellen. Du kannst einen Beitrag 3 Stunden lang bearbeiten und ergänzen.
    Gruss
    schnorpser

    The post was edited 1 time, last by hgdo ().

  • schnorpser wrote:

    Sorry, was sollte ich beim Crontab besser eintragen, statt #!/bin/bash?
    Du sollst es auf der Kommandozeile genau so testen, wie Du es in der Crontab eingetragen hast.
    Wenn in der Crontab steht, dass das Kommando /etc/cron/crontabs/del22 ausgeführt werden soll, solltest Du auch genau dieses Kommando /etc/cron/crontabs/del22 in der Kommandozeile testen.

    Wenn die File-Permissions z.B. nichts stimmen und das x-Bit fehlt, funktioniert der in die Crontab eingetragene Aufruf nicht.

    Grundsätzlich ist es so, dass es wenig Sinn macht, den Aufruf anders zu testen, als man ihn später ausführen möchte...
  • @RickX das war mir neu, der Aufruf /etc/cron/crontabs/del22.sh Ich war der Meinung, ein Script muss immer mit sh /etc/cron/crontabs/del22.sh aufgerufen werden. Beide Scripts starten wie gewünscht mit direktem Aufruf.

    @rdamas
    Die Datei /etc/cron/crontabs/root habe ich aktuell so angepasst :
    Display Spoiler

    * */5 * * * /etc/cron/crontabs/del22.sh
    15 * * * * /etc/cron/crontabs/pdel

    und (als Test) del22.sh wird alle 5 Minuten gestartet
    und (auch als Test) pdel auch jede Stunde und 15 Minuten.


    Nur seltsam, die Scrips werden nicht immer so gestartet aus /etc/cron/crontabs/root ? ?(
    Gruss
    schnorpser

    The post was edited 2 times, last by schnorpser ().

  • Keine Ahnung; da ist dann irgendetwas bei dir, was du nicht geschrieben hast (und vielleicht auch nicht auf dem Plan hast) - eigentlich ist alles ok:

    - Rechte des Scripts beinhalten "ausführbar" (x-Bit gesetzt)
    - Script beinhaltet keine Windows-Zeilenenden
    - Pfad ist korrekt, d.h. das Script existiert auch so wie in der Crontab eingetragen
    - Im Script werden keine unbekannten Environment-Variablen benutzt

    Noch was: Crontab-Files editiert man unter Unix/Linux nicht von Hand - dafür gibt es ein Programm: crontab -e. Weil nach einer Crontab-Änderung der Crontab-Dämon ja wissen muss, dass die Crontab geändert wurde. Vermutlich prüft der Dämon jede Minute einmal, ob es ein geändertes Crontab-File gibt, aber ich würde mich nie darauf verlassen, dass das so ist.

    The post was edited 1 time, last by rdamas ().

  • @rdamas :thumbsup:

    ich meine, crontab -e war der erfolgreiche Schritt.

    Nun wird eine Kopie als /etc/crontabs/crontabs.xxxx vom /etc/cron/crontabs/root angelegt. Und dabei immer eine neue weitere Kopie.

    Es klappt nun auf jeden Fall, Danke für die vielen o.g. Hinweise.

    Beitrag kann als erledigt gekennzeichnet werden (konnte ich das nicht mal vor Jahren selbst setzen?)
    Gruss
    schnorpser

    The post was edited 1 time, last by schnorpser ().