WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Shell-Skript funktioniert, als Cronjob aber nicht (http://www.wcm.at/forum/showthread.php?t=197784)

Nikro 22.08.2006 11:07

Shell-Skript funktioniert, als Cronjob aber nicht
 
Bin absoluter Neuling, was Shell-Skripte anbelangt. Ich habe mir folgendes Skript gebastelt, um meine MySQL-Datenbank täglich zu sichern:
Code:

#!/bin/sh

dateiname=`date +%Y%m%d`

# Dump der Joomla-Datenbank erstellen
mysqldump --user=abc --password=xyz usr_web2_1 > /pfad/zum/dump/dump_${dateiname}.sql

# Dumps, die aelter als 14 Tage sind, werden geloescht
find /pfad/zum/dump -ctime +14 | xargs rm -f

Wenn ich das Skript manuell starte (./backup.sh) funktioniert es einwandfrei! Daher habe ich dafür einen Cronjob angelegt, der täglich ausgeführt wird. Dabei wird aber lediglich eine leere Datei namens "dump_.sql" erzeugt.

Wieso?? Ich kapier das einfach nicht und steh total an... :confused:

Bin für jeden Tipp dankbar!!
PS: Falls es wichtig ist, es läuft unter Debian Linux.

arctic 22.08.2006 11:17

vielleicht muss es die datei vorher geben

bei solaris würde ich mit "touch filename"
die datei anlegen.

weiss nicht obs das auch bei linux gibt

permissions wären auch als problem denkbar

Nikro 22.08.2006 11:29

Das kann es auch nicht sein. Ich habe das Skript manuell gestartet, daraufhin wurde die Datei "dump_20060822.sql" korrekt erstellt. Anschließend per Cronjob gestartet, Ergebnis: Leere Datei namens "dump_.sql" :(
Die Datei gab es also bereits, hat aber nichts genützt.

m@rio 22.08.2006 12:46

Schau dir mal die Ausgabe von Cronjob an. Die müssten im Postfach des Users unter dem der Cronjob lauft (meistens root) liegen.

colossus 22.08.2006 13:22

`sh` kennt kein ${VARIABLE}-Konstrukt.

Nikro 22.08.2006 13:24

Zitat:

Original geschrieben von colossus
`sh` kennt kein ${VARIABLE}-Konstrukt.
Bist du dir da sicher?? Wie gesagt, führe ich das Skript manuell aus, funktioniert es ja, es wird auch die Variable verarbeitet.

Nikro 22.08.2006 13:40

Zitat:

Original geschrieben von m@rio
Schau dir mal die Ausgabe von Cronjob an. Die müssten im Postfach des Users unter dem der Cronjob lauft (meistens root) liegen.
Da habe ich folgendes gefunden:
Code:

/var/www/web2/files/scripts/datenbank.sh: line 1: date: command not found
/var/www/web2/files/scripts/datenbank.sh: line 6: mysqldump: command not found
/var/www/web2/files/scripts/datenbank.sh: line 9: find: command not found
/var/www/web2/files/scripts/datenbank.sh: line 9: xargs: command not found

Ich verstehe nicht, warum das Skript nicht funktioniert, nur weil es automatisch gestartet wird... Was macht cron anders??

m@rio 22.08.2006 13:55

Das hat vermutlich mit der "Art der Shell" zu tun (google mal nach "login shell"). Daher sind die Such-Pfade nicht gesetzt.
Du kannst in deinem Script die Programme mit dem kompletten Pfad angeben (findet man am leichtesten mit which programmname), dann müsste es funktionieren.

gaelic 22.08.2006 14:20

wie lautet der eintrag in der crontab? mit welchem user wird das script aufgerufen?

Nikro 22.08.2006 14:26

Zitat:

Original geschrieben von m@rio
Das hat vermutlich mit der "Art der Shell" zu tun (google mal nach "login shell"). Daher sind die Such-Pfade nicht gesetzt.
Du kannst in deinem Script die Programme mit dem kompletten Pfad angeben (findet man am leichtesten mit which programmname), dann müsste es funktionieren.

Das war wohl der Fehler! Habe mit which den Pfad anzeigen lassen und im Skript dazugeschrieben -> jetzt funktionierts!
Vielen Dank für eure Hilfe, besonders an m@rio! :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag