cron frage
Obermotz 07.04.2010 - 14:34 911 1
Obermotz
Fünfzylindernazi
|
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: #!/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: 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! //edit-solved// hach ich bin ein trottel und verwend keine absoluten pfade! sorry
Bearbeitet von Obermotz am 07.04.2010, 14:42
|
COLOSSUS
AdministratorGNUltra
|
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 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.
|