[RedHat] Seltsames Verhalten bei Cronjob... Hilfe!!

E

-eraz-

Tripel-As
Hallo Leute,

ich weiß einfach nicht weiter, hab hier ein total seltsames Verhalten von RedHat V5.2 beim Versuch ein Skript per Cronjob zu starten. Das (bash) Skript das ich geschrieben habe geht über ca. 2 Seiten, ich habe in der Crontab mal eingetragen das es alle 5 Minuten ausgeführt werden soll (testweise). Nun ist es so, dass das Skript auch gestartet wird, aber nur die ersten Zeilen des Skripts verarbeitet werden...??? :think:

Hier die ersten Zeilen des Skripts:
Code:
WORKDIR=/opt/local/norkom/wlm/worldcheck
IMETHOD=~2
FILENAME_OLD=$(ls -lS |head -n2 |cut -d" " -f13 |tail -n1)
DATUM=`date`

### Vorarbeiten ###
###################
if [ -f $WORKDIR/flag.txt.processed ]; then
  echo "flag.txt.processed und altes Blacklistfile wird gesichert..."
        if [ -d archive ]; then
          rm -R $WORKDIR/archive/*
          mv $WORKDIR/flag.txt.processed $WORKDIR/archive/
          mv $WORKDIR/$FILENAME_OLD $WORKDIR/archive/
          echo "Altes Blacklistfile wird komprimiert, bitte warten..."
          gzip $WORKDIR/archive/$FILENAME_OLD
        else
          echo "$DATUM
                ACHTUNG!!! Archiv Ordner nicht gefunden, Skriptverarbeitung abgebrochen" >> error.log
          exit 0
        fi
else
Ich habe im Crontab File die ausgabe in ein Log File ausgegeben. Dieses Logfile wird auch erstellt und es ist folgende Ausgabe drin:
flag.txt.processed und altes Blacklistfile wird gesichert...
Und weiter nix...? Das "If" scheint garnicht mehr verarbeitet zu werden, zumindest wird das löschen, verschieben etc. nicht mehr gemacht. Wenn ich das Skript manuell starte klappts wunderbar... weiß einer von Euch was das sein könnte?

Crontab -l liefert folgende Ausgabe:
Code:
*/5 * * * * /opt/local/norkom/wlm/worldcheck/download.sh > /opt/local/norkom/wlm/worldcheck/cronjob.log
(Es gibt nur die eine Zeile)
 
Stimmt, ist noch ein Schönheitsfehler, muss das noch vereinheitlichen. Jedenfalls liegt das Verzeichnis "archive" im selben Verzeichnis wie das Skript.

Habe mal ein Testskript mit folgendem Code gemacht:
Code:
#!/bin/bash
echo "Skript wird gestartet..."
if [ -f test.txt ]; then
        echo "File wurde gefunden"
else
        echo "File wurde nicht gefunden"
fi

exit 0
die test.txt hab ich manuell angelegt. Wenn ich dieses Skript nun manuell ausführe findet er das File, wenn es per Cronjob ausgeführt findet er das File nicht??? Jetzt sind wirklich alle Klarheiten beseitigt, vorallem weil mein eigentliches Skript eigentlich nen error loggt sollte das Verzeichnis "archive" nicht gefunden werden... ?(
Kann das ein Bug sein... gibts ja nicht sowas...
 
Du solltest in Deinen für cron bestimmten Skripten grundsätzlich nur ABSOLUTE PFADE für Verzeichnisse und Dateien benutzen, also z.B.

Code:
if [ -d "$WORKDIR/archive" ]; then
etc. pp.
 
oder vorher ein
Code:
cd $WORKDIR
allerdings sind absolute Pfade zubevorzugen, wie Aqualung schon schrieb.
Kann das ein Bug sein... gibts ja nicht sowas...
Nein, das ist ein logischer Fehler in deinem Script.
 
So war ne schwere Geburt... jetzt läufts, lag wirklich daran dass nur absolute Pfade angegeben werden müssen. Dankeschön!

Allerdings erklärt das noch nicht ganz, warum dann kein Fehler von meinem Skript geloggt wurde... denn wenn er das Ding nicht findet, schreibt dass das Skript eigentlich raus. ?(
 
Code:
 else
          echo "$DATUM
                ACHTUNG!!! Archiv Ordner nicht gefunden, Skriptverarbeitung abgebrochen" >> error.log
          exit 0

Und wo hast du nach dieser error.log gesucht??

Außerdem macht es in meinen Augen keinen Sinn hier mit "exit 0" auszusteigen.
Das ist doch ein Fehler, warum dann "exit 0".
Wird dieser Rückgabewert überhaupt irgendwo noch benutzt?
Bei "exit 0" wäre es nämlich eine korrekte Programmbeendigung, was ja eigentlich stimmt, aber irgendwie doch wieder nicht.
Nur mal zum Nachdenken.
 
Zuletzt bearbeitet:
Und wo hast du nach dieser error.log gesucht??
Stimmt! :D

nein der Rückgabewert wird eh nicht verwendet... Mein damaliger Kursleiter hat halt gemeint das sollte man so machen, über die Sinnhaftigkeit habe ich mir auch schon ein paarmal Gedanken gemacht,... aber naja... Hauptsache es geht und wieder was dazugelernt, danke Euch! :)
 
Zuletzt bearbeitet:

Ähnliche Themen

sed im script per crontab

Backupproblem mit tecback

Zurück
Oben