Script per Crontab starten klappt nicht ???

mehlbox

mehlbox

Eroberer
:hilfe2:
Hallo zusammen,

habe einige scripts erstellt und wollte diese per crontab starten. Habe sie auch in der crontab eingerichtet und wenn ich sie per Hand starte funktionieren sie auch, wenn sie per cron gestartet werden bekomme ich immer folgende Fehlermdeldungen:

Message 1:
From root@DV09FTP01 Mon Nov 7 16:30:00 2005
Date: Mon, 7 Nov 2005 16:30:00 +0100
From: root@DV09FTP01 (Cron Daemon)
To: root@DV09FTP01
Subject: Cron <root@DV09FTP01> run-parts /opt/scripts/sendftp/infowerk_1
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/scripts:/opt:/opt/scripts/wartung:/opt/scripts/sendftp:>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/>
X-Cron-Env: <LOGNAME=root>

Not a directory: /opt/scripts/sendftp/infowerk_1

Die crontab sieht so aus:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/scripts:/opt:/opt/scripts/wartung:/opt/scripts/sendftp:
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
21 4 * * 5 root run-parts /opt/scripts/wartung/wartung.sh |mail -s "Statusbericht DV09FTP01" admin@test
0,30 * * * 1-5 root run-parts /opt/scripts/sendftp/infowerk_1
15,45 * * * 1-5 root run-parts /opt/scripts/sendftp/insole_1 2> /dev/null

Ich benutze Redhat ES3 Version 4
Vielen Dank für Eure Hilfe.

Gruß Mehlbox
 
Hi,

es sieht ganz so aus als würde der Path zu deinem Script oder der Name nicht stimmem.
Überprüfe nochmal die schreibweise genau.

Manchmal ist es nur ein kleiner Tipfehler, da in der Meldung ja steht das
""Not a directory: /opt/scripts/sendftp/infowerk_1""

Sonst sehe ich keinen Fehler in der crontab.

Gruß insker
 
Hallo grüß Dich,

habe jeden einzelnen Buchstaben überprüft und die Schreibweise stimmt, auch alle Ordner und Dateien sind da??

Ich weiss nicht mehr weiter???

Danke und Gruß Mehlbox
 
Hallo
Ist /opt/scripts/sendftp/infowerk_1 eine ausführbare Datei?
Auch wenn die Dateiendung .sh nicht zwingend nötig ist, schaut es so aus als ob
du nur das Verzeichnis angegeben hättest, in welchem möglicherweise dein Script liegt.
Will sagen, dass ich hier nur mal spekuliere, weil die Meisten die Endung .sh für Scripte verwenden.

Wichtig ist aber, dass das Skript selbst ausführbar ist, oder der Interpreter selbst angegeben wird.

Schau dir also mal die o.g. Datei genau an.

Gruß Wolfgang
EDIT//
Schreib doch mal, was
cat /opt/scripts/sendftp/infowerk_1 ausgibt.
Ist das ein bash-script?
 
Zuletzt bearbeitet:
[root@DV09FTP01 etc]# cat /opt/scripts/sendftp/infowerk_1
# Script erzeugt eine Dateiliste ueber Dateien mit der Erweiterung *.zip
# Diese wird anschliesend abgearbeitet und fuer jede Datei eine
# FTP-Uebertragung aufgerufen.

# Mit dem Aufruf "insole_1 2> /dev/null" wird STDERR des Skripts uns NULL geleitet

# Funktionen deklarieren
No_Files()
{
echo
echo " Es stehen keine Dateien zur Uebertragung bereit!!"
echo
exit 2
}

# In richtiges Verzeichnis springen und Dateiliste anlegen
cd /ftp/fotobuch/infowerk
# ls *.zip >../INFOWERK "Einfache Dateiliste ohne Endung zu entfernen!!"
# Erzeugt eine Dateiliste aller Dateien mit Endung "zip"
# und entfernt diese Endung in der Dateiliste
ls *.zip > /dev/null
if test $? -ge 1
then
# Logfileintrag schreiben
LOG=`date +%Y%m%d`";"`date +%H%M%S`";Keine Datei vorhanden;0"
echo $LOG >> /var/log/infowerk
No_Files
fi
ls *.zip | sed -e 's/\.[^\.]*$//' >../INFOWERK

# Dateiliste zeilenweise einlesen und pro Dateiname
# die aktionen in der Schleife ausfuehren
for i in `cat /ftp/fotobuch/INFOWERK`;do
# Fuer Infowerk werden die Dateien vorher in *.pria umbenannt
mv -f $i.zip $i.pria
# FTP-Script fuer die Uebertragung aufrufen
/opt/scripts/sendftp/infowerk_2 $i.pria
if test $? -ge 1
then
echo
echo " Fehler bei FTP-Uebertragung !!"
echo
exit 1
fi
# Nach Uebertragung erzwungenes umbenennen "-f"
# Vorhandene Dateien werden ueberschrieben
mv -f $i.pria $i.old
# Logfileintrag schreiben
LOG=`date +%Y%m%d`";"`date +%H%M%S`";"$i".old"";"`wc -c < "$i.old"`
echo $LOG >> /var/log/infowerk
# Mailversand fuer Uebertragung Fotobuch
mail -s "yyy $i an xxx gesendet" **********< '/opt/scripts/dummy'
done
 
Hallo
Wo ist deine shebang?
Füge mal als erste Zeile:
#!/bin/bash
ein und setze das x-bit.
chmod 755 /opt/scripts/sendftp/infowerk_1
Gegebenenfalls anpassen, um es für den User unter welchem der
cronjob läuft ausführbar zu machen.
Alternativ kannst du im cronjob auch den Eintrag so ändern, dass du den Interpreter mit angibst:
Beispiel:
0,30 * * * 1-5 root run-parts /bin/bash /opt/scripts/sendftp/infowerk_1
Damit verfütterst du das script an den richtigen Interpreter.

HTH
Gruß Wolfgang
 
Hi,

Ich nehme an, dass Du bei der Verwaltung von RH falsch abgeguckt hast.
Das Skript run-parts, dass in der Crontab erwaehnt wird, erwartet ein Verzeichnis. Ich nehme an, dass es alle Skripte, die es in dem entsprechenden Verzeichnis (/etc/crontab.hourly/ etc.) findet, ausfuehrt.

Wenn Du nun crontab mit Deinem eigenen Skript ausfuehrst, lasse das 'run-parts' weg, da es Dein Skript nicht interpretiert:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/scripts:/opt:/opt/scripts/wartung:/opt/scripts/sendftp:
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
21 4 * * 5 /opt/scripts/wartung/wartung.sh |mail -s "Statusbericht \ DV09FTP01" admin@test
0,30 * * * 1-5 /opt/scripts/sendftp/infowerk_1
15,45 * * * 1-5 /opt/scripts/sendftp/insole_1 2> /dev/null


Keine Ahnung, was das 'root' vor dem run-parts noch soll, ist vermutlich auch eine Redhat-Erweiterung. Ich benutze selber kein RH, deswegen ist das nur eine Vermutung, also probier's einfach mal aus.
 
Hallo
@rikola
Dass das Skript in der falschen (nämlich systemweiten) crontab steht, ist hier eine andere Sache.
Klar wär es besser, wenn das Script in der user-crontab stehen (eingetragen) würde.
crontab -u user -e
Es ist allerdings keine RH eigene Sache:

Debian Sarge:

cat /etc/crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

...


Ungeachtet dessen, wird es ausgeführt, wenn es alle Pfade und
den Interpreter kennt bzw. das richtige X-Bit gesetzt ist.
In der hier genannten crontab wird das Problemskript ja auch garnicht mit run-part gestartet.
Das Feld für user ist übrigens nur in der systemweiten crontab vorhanden!
Meine Hinweise dazu habe ich ja geschrieben.
Mal sehen ob eine Rückmeldung kommt, ob es denn nun ging.

Gruß Wolfgang
 
Hallo zusammen,

habe nun alles getestet wie es hier steht root run-parts weggenommen usw. leider alles kein erfolg, werde nun mal ein testsystemn aufsetzen mit fedora core uind dort mal die scripte testen.

Melde mich dann später wieder. . .

Erstmal danke bnis nachher. . .

Gruß mehlbox
 
Hallo zusammen,

es lag irgendwie an webmin, der hat die crontab immer wieder überschrieben, habe nun alles auf der Konsole eingetippt und ohne root und run-parts und mit den richten shebang #!/bin/bash in den scripten und nun läufts.

Vielen Dank an allen die mir mit ihren Tps den richtigen Weg gezeigt haben.

Gruß mehlbox
 

Ähnliche Themen

Crontab und Scripts - Problem

Runlevel Editor

Shellskript - Fehler in Cron

cron.daily Ausführungszeit

Autostart von X mit google-chrome durch systemd

Zurück
Oben