Cronjob - warum geht es nicht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
krasnoj
Beiträge: 55
Registriert: 21.11.2005 23:55:53

Cronjob - warum geht es nicht

Beitrag von krasnoj » 13.06.2006 15:39:51

Hi!

Habe folgendes Problem. Ich habe ein Skript. Wenn ich es händisch starte, funktioniert alles problemlos, hingegen wenn ich es als Cronjob starten probiere, dann nicht. Laut /var/log/syslog wird das Skript allerdings ausgeführt.

Hier sind die wichtigsten Zeilen:

Code: Alles auswählen

--------- syslog ---------------
tail /var/log/syslog --lines=2
Jun 13 15:35:01 vs5716 /USR/SBIN/CRON[13328]: (root) CMD (echo "`date` 5 Min test" >> /tmp/test.log)
Jun 13 15:35:01 vs5716 /USR/SBIN/CRON[13330]: (root) CMD (/usr/local/bin/update-init.sh)
-------------ende syslog
Dann crontab -l

Code: Alles auswählen

sh:  crontab -l
# m h  dom mon dow   command

# update von zirl.at und Berechtigungen setzen
*/5 * * * *  /usr/local/bin/update-init.sh
*/5 * * * * echo "`date` 5 Min test" >> /tmp/test.log
Und hier das Skript selber:

Code: Alles auswählen

#!/bin/sh
#
# ersetzt die Startseiten durch die aktuellen Seiten der Original HP

current=`pwd`
cd /var/www/bilder.zirl.at
wget -N http://www.zirl.at
cd /var/www/
chown -R :www-data  *
chmod -R 750 *
cd $current
echo "Geklappt `date`" >> /tmp/error_oder_nit.log
exit 0

Und nun meine Frage: Warum funktioniert das so nicht. Der andere Crontab:

Code: Alles auswählen

*/5 * * * * echo "`date` 5 Min test" >> /tmp/test.log
Hingegen funktioniert perfekt.

lg Stefan
Zur Erinnerung:
Sony verbreitet Rootkits / Trojaner http://www.heise.de/newsticker/meldung/65602
bzw. Raubkopien:
http://www.heise.de/newsticker/meldung/66423

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 13.06.2006 15:54:46

Versuch doch mal als erstes, dass du die Befehle mit kompletten Pfaden im Skript angibst.
Zum Testen koenntest du in dein Skript auch noch

Code: Alles auswählen

set -x
einbauen. Dann siehst du etwas mehr, was so ausgefuehrt wird.

Btw, klappt nicht ist etwas vage. Passiert gar nichts oder gibts wenigstens ne Mail mit Fehlermeldungen vom cron? Wenn ja, was steht da so drin?

krasnoj
Beiträge: 55
Registriert: 21.11.2005 23:55:53

Beitrag von krasnoj » 13.06.2006 17:17:57

Ich habe jetzt ein neues Skript erstellt:

Code: Alles auswählen

cat /usr/local/bin/datum.sh
#!/bin/sh
#
# Testskript

current=`pwd`
cd /var/www/bilder.zirl.at
wget -N http://www.zirl.at

cd /var/www/
chown -R :www-data  *
chmod -R 750 *
cd $current

/bin/echo "Schaug ma mal `date`" >> /tmp/datum.log
Und das funktioniert jetzt. Jetzt verstehe ich gar nichts mehr.
Zur Erinnerung:
Sony verbreitet Rootkits / Trojaner http://www.heise.de/newsticker/meldung/65602
bzw. Raubkopien:
http://www.heise.de/newsticker/meldung/66423

krasnoj
Beiträge: 55
Registriert: 21.11.2005 23:55:53

Beitrag von krasnoj » 13.06.2006 17:21:16

nepos hat geschrieben:Versuch doch mal als erstes, dass du die Befehle mit kompletten Pfaden im Skript angibst.
Habe ich gemacht, hat nichts gebracht.
nepos hat geschrieben:Zum Testen koenntest du in dein Skript auch noch

Code: Alles auswählen

set -x
einbauen. Dann siehst du etwas mehr, was so ausgefuehrt wird.

Direkt ausgeführt hat so alles gepasst. Mit Cronjob keine Ahnung wie ich an den output komme.

nepos hat geschrieben:Btw, klappt nicht ist etwas vage. Passiert gar nichts oder gibts wenigstens ne Mail mit Fehlermeldungen vom cron? Wenn ja, was steht da so drin?
Du solltest ev. wissen, dass das ganze ein vserver auf Debian Sarge ist:

Code: Alles auswählen

uname -a
Linux vs5716 2.4.24-vs1.26 #11 Sat Mar 5 12:14:30 CET 2005 i686 GNU/Linux
Der Ordner /var/mail ist komplett leer. K.A. ob es Mails gegeben hätte. Und mit klappt nicht meine ich:
Wget, chmod, echo >> wurden nicht ausgeführt.
Zur Erinnerung:
Sony verbreitet Rootkits / Trojaner http://www.heise.de/newsticker/meldung/65602
bzw. Raubkopien:
http://www.heise.de/newsticker/meldung/66423

krasnoj
Beiträge: 55
Registriert: 21.11.2005 23:55:53

Beitrag von krasnoj » 13.06.2006 22:49:53

Danke einmal an nepos für das Antworten.

Ich habe jetzt das Problem gefunden. Und zwar hatte ich die Datei /usr/local/bin/update-init aufgerufen und dabei hieß sie update-index.

Jetzt geht alles. Frage mich aber, warum keine Fehlermeldungen geschrieben worden sind, bzw. wohin diese gekommen sind.

lg krasnoj
Zur Erinnerung:
Sony verbreitet Rootkits / Trojaner http://www.heise.de/newsticker/meldung/65602
bzw. Raubkopien:
http://www.heise.de/newsticker/meldung/66423

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 14.06.2006 11:28:52

Normalerweise arbeitet Cron so, dass alle Ausgaben von Cron-Jobs an den User geschickt werden, dem die entsprechende crontab gehoert.
Wenn das in der Root-Crontab drin ist, dann sollte eine Mail an root rausgehen, wenn das Skript irgendwelchen Output produziert. Man kann aber auch durch eine Option in der Crontab regeln, wohin die Mails gehen sollen. Da solltest du eventuell mal

Code: Alles auswählen

man 5 crontab
ansehen.
Ach ja, generell: du kannst dich bei Skripten fuer Cronjobs nicht auf korrekt gesetzte Pfade verlassen. Deshalb die Programme immer mit Pfad aufrufen!

Antworten