Crontab und Scripts - Problem

Diskutiere Crontab und Scripts - Problem im Debian/Ubuntu/Knoppix Forum im Bereich Linux Distributionen; Hallo Zusammen Ich habe ein Script welches mittels Cronjob ausgeführt werden soll. Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:...

  1. #1 UwBeInter, 05.07.2017
    UwBeInter

    UwBeInter Jungspund

    Dabei seit:
    04.07.2017
    Beiträge:
    11
    Zustimmungen:
    0
    Hallo Zusammen

    Ich habe ein Script welches mittels Cronjob ausgeführt werden soll.
    Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:

    Die crontab sieht folgendermassen aus:
    Code:
    30 * * * * /var/www/vhosts/uwbeinternational.ch/weather_reports/images/chk_new_files_img.sh
    30 * * * * /var/www/vhosts/uwbeinternational.ch/weather_reports/videos/chk_new_files_vid.sh
    Ich weiss dass Script für Cronjobs absolute Pfade haben müssen. Normal funktioniert es einwandfrei aber via Cron nicht. Also habe ich die Pfade angepasst und das Script sieht nun so aus:

    Code:
    #!/bin/bash
    var=0
    for /usr/bin/file in ${dir}/weather_reports/images/*
    do
            [[ "$file" =~ handled_img.dat ]] && continue
            if /bin/grep -w "$file" "${dir}/handled_img.dat" > /dev/null 2> /dev/null
            then
                    continue
            fi
            var=`expr $var + 1`
            /usr/bin/printf "%s\n" "$file" | /usr/bin/tee -a "${dir}/handled_img.dat"
    done
    if [ $var -gt 1 -o $var -eq 1 ] ;
    then
        /usr/bin/mailx -a "From: UwBe International <info@mail.tld>" -s "Neue Bilder auf dem FTP vorhanden" info@mail.tld < "mail_info.txt"
    fi
    Doch es passiert leider gar nichts.
    Ohne diese Pfade /usr/bin vorne dran und wenn ich dann so das Script manuell mit ./ ausführe, funktioniert alles einwandfrei. Nur via Cronjob geht es nicht. Und das Script ist mit chmod +x ausführbar gemacht worden.

    Hat jemand einen Idee was ich übersehen haben könnte?
     
  2. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.222
    Zustimmungen:
    17
    Code:
    for /usr/bin/file in
    ist garantiert falsch.

    ... Du willst da ja eine Variable belegen...

    Weitere Fehlermeldungen dürftest Du vermutlich per Mail an den lokalen root-Account erhalten.
     
  3. #3 UwBeInter, 05.07.2017
    Zuletzt bearbeitet: 05.07.2017
    UwBeInter

    UwBeInter Jungspund

    Dabei seit:
    04.07.2017
    Beiträge:
    11
    Zustimmungen:
    0
    Wurde nie eingerichtet oder angepasst. Daher hab ich jetzt die normale Log am Cron angehängt.Folgendes schreibt der nun rein:

    ich frage mich nur warum findet der das nicht? es ist doch ein absoluter Pfad?
    Habe es auch mit /bin/bash und /bin/bash --login root etc. versucht ohne Erfolg
     
  4. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.222
    Zustimmungen:
    17
  5. #5 UwBeInter, 05.07.2017
    Zuletzt bearbeitet: 05.07.2017
    UwBeInter

    UwBeInter Jungspund

    Dabei seit:
    04.07.2017
    Beiträge:
    11
    Zustimmungen:
    0
    Ein Windowszeichen? Auch wenn ich diret in der Shell mit dem Nano-Editor die Skripte schreibe? Ansonsten arbeite ich auf einem Mac und nicht Win, aber ich schaue da gerne mal nach. Stackoverflow kenn ich da wurde ich auch schon mehrmals fündig, auch wenn es manchmal nur an minimalsten kleinsten Dingen lag. :) ^^

    Habe dos2unix drüberlaufen lassen und den Cronjob erneut ausgeführt.
    Immer noch dieselbe Meldung dass die Datei nicht gefunden wurde.
     
  6. #6 UwBeInter, 06.07.2017
    UwBeInter

    UwBeInter Jungspund

    Dabei seit:
    04.07.2017
    Beiträge:
    11
    Zustimmungen:
    0
    Also ich habe nun alles mögliche versucht. Von cd, root, /bin/bash -l -c ./ etc... über cd /var/www/...; bash ./chk_new_files.sh aber nichts davon will funktionieren. Ich erhalte in der Log immer nur "File not found".

    Ich habe nun gelesen dass crontab -e immer von /root/ aus geht. Dann wäre der Pfad also /root/var ... logisch findet er nicht, weil der normale Pfad von Root also vom ~ her kommend cd / und danach /var ... ist ..

    Wie teile ich das nun im crontab mit damit der auch das Script findet??
     
  7. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.222
    Zustimmungen:
    17
    der Pfad sollte schon passen.

    Die Fehlermeldung kenne ich wie gesagt hauptsächlich dann, wenn der Shebang fehlerhaft ist.

    Aber poste doch mal
    Code:
    crontab -l
    ls -la /var/www/vhosts/uwbeinternational.ch/weather_reports/images/chk_new_files_img.sh
    file /var/www/vhosts/uwbeinternational.ch/weather_reports/images/chk_new_files_img.sh
     
  8. #8 floyd62, 06.07.2017
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    318
    Zustimmungen:
    0
    Hi,

    ich nehme an, du hast die "for"-Schleife inzwischen korrigiert, wie marce oben angedeutet hat. Die Fehlermeldung, die du oben gezeigt hast, enthält eine Zeilennummer - demnach wird das Skript gefunden und ausgeführt - sonst würde ich eine Meldung wie ".../check_new_files_img.sh: No such file or directory" erwarten. Die Fehlermeldung "File not found" kommt wohl daher, dass du eine Variable "${dir}" verwendest, die im Skript aber nicht gesetzt wird und in der cron-Environment nicht bekannt ist, in deiner Login-Shell beim interaktiven Aufruf aber bekannt sein dürfte.

    Nur als Ergänzung: ich stimme zu, es ist sicher empfehlenswert, bei der Definition von cron-Jobs den kompletten Pfad der auszuführenden Kommandos anzugeben. Innerhalb der Skripten, die aus cron laufen sollen, kannst du aber besser einfach am Anfang den PATH setzen
    Code:
    PATH=/usr/bin:/bin export PATH
    
    und dir dann die ganzen Kunststückchen sparen ...

    Gruss, A.
     
  9. #9 UwBeInter, 06.07.2017
    UwBeInter

    UwBeInter Jungspund

    Dabei seit:
    04.07.2017
    Beiträge:
    11
    Zustimmungen:
    0
    Danke für Eure Inputs.
    Aber: Mann mann mann bin ich doof!!! ich setze mich wohl nie mehr hinter den PC wenn ich müde bin !!
    Schreibfehler! Es fehlt ganz klar ein httpdocs/ nach dem uwbeinternatioal.ch .. logisch findet der das script nicht!

    OMG... nun funzt es...
     
  10. #10 HeadCrash, 06.07.2017
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    489
    Zustimmungen:
    1
    Ort:
    Bayern
    Jedem schon passiert :)

    Eine kleine Anmerkung noch am Rande, ich würde solche Skripte nicht in Verzeichnisse packen die vom Webserver ausgeliefert werden oder in die irgend ein Upload schreiben kann.

    mfg
    HeadCrash
     
Thema:

Crontab und Scripts - Problem

Die Seite wird geladen...

Crontab und Scripts - Problem - Ähnliche Themen

  1. centos crontab reboot zeit

    centos crontab reboot zeit: Hi jungs habe wieder mal ne frage ich möchte mein centos rechner jeden tag um 05 uhr rebooten und habe vollgendes in /etc/crontab eingetragen 00...
  2. Cygwin - Crontab

    Cygwin - Crontab: Hallo Leute, ich bin neu in der Linux Welt. Bzw. ich taste mich Schritt für Schritt ran *g Vorgeschichte: Ich habe eine Domäne (Windows)....
  3. sed im script per crontab

    sed im script per crontab: hallo und nen schönen Tag wünsche ich, Ich bin dabei ein script zu schreiben das mir die daten in eine log-datei schreibt. Das klappt auch soweit...
  4. $HOME wird in crontab beim Setzen einer Variablen nicht aufgelöst

    $HOME wird in crontab beim Setzen einer Variablen nicht aufgelöst: Hallo Jungs, wollte nur nicht für mich behalten, dass bei SLES 10 in der crontab $HOME zwar allgemein aufgelöst wird, die Auflösung...
  5. [Solaris] Skript -> Variable setzen -> Crontab

    [Solaris] Skript -> Variable setzen -> Crontab: Hallo Leute, ich muss mich leider gerade etwas mit unserm sturen Solaris Server ärgern. Hauptsächlich habe ich es eigentlich mit RedHat zu tun,...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden