"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

cron frage

Obermotz 07.04.2010 - 14:34 911 1
Posts

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Hi!

Ich hab ein simples backupscript geschrieben, das ich per cronjob ausführen möchte. Das backupscript funktioniert einwandfrei wenn es von der bash aufgerufen wird, wird aber nur zur hälfte ausgeführt wenn es von cron gestartet wird.

mein skript:
Zitat
#!/bin/sh

echo "start backup"
rm backup.log

echo "compressing files"
tar -zcvf /root/backup/vhlinuxweb_td2.tar.gz /var/www/vhosts > backup.log

echo "creating sql dump"
mysqldump -u *** -p*** -A | gzip -9 > vhlinuxdb_td2.sql.gz

echo "replacing old backup files"
rm vhlinuxweb_td.tar.gz
rm vhlinuxdb_td.sql.gz
mv vhlinuxweb_td2.tar.gz vhlinuxweb_td.tar.gz
mv vhlinuxdb_td2.sql.gz vhlinuxdb_td.sql.gz

echo "job done. check backup.log if success"

in meinem cronlog steht folgendes:
Zitat
start backup
compressing files
creating sql dump
replacing old backup files
job done. check backup.log if success
Allerdings ist nix passiert ausser dass er die Datei vhlinuxweb_td2.tar.gz erstellt hat. Die backup.log ist unverändert.
kanns irgendwas mit Berechtigungen zu tun haben, ich hab keinen Plan mehr..

der cron-aufruf selbst:
25 14 * * * /root/backup/backup.sh > /root/backup/cronlog

halp! :D

//edit-solved// hach ich bin ein trottel und verwend keine absoluten pfade! sorry :rolleyes:
Bearbeitet von Obermotz am 07.04.2010, 14:42

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12068
Du solltest auf jeden Fall versuchen, auch stderr deines Scripts einzufangen. Vermutlich findest du eine Kopie davon im syslog (cron facility). Als dreckigen Workaround kannst du als erste Zeile in dein Backupscript
Code:
exec 2>&1
einfuegen, dadurch wird stderr auf stdout fuer diese Instanz deiner Shell umgeleitet. Erst mit den sichtbar gemachten Fehlermeldungen kann man sicher sagen, was schief geht.

Mein Tipp: Die Programme, die du aufrufst (mysqldump etc.) sind nicht im PATH des Environments deines cron daemons. Du solltest in Scripts die von cron gestartet werden immer absolute Pfade verwenden, oder aber am Anfang des Scripts PATH auf einen (funktionierenden, wohldefinierten) Wert setzen.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz