Ich habe ein Problem. Ich habe die Skriptausführung geplant, aber wenn es soweit ist, passiert nichts.
#!/bin/sh
TIME=`date +"%d-%m-%Y"`
cd /var/www/flyer/data/www/
mysqldump -u root -ppasswd --databases db_name --create-options --default- character-set=utf8 --result-file=dump.sql
FILENAME="backup_$TIME.tar.gz"
tar -cpzf ../backups/$FILENAME somefolder dump.sql
rm dump.sql
chown flyer:flyer ../backups/$FILENAME
chmod 666 ../backups/$FILENAME
Wenn ich das Skript direkt von SSH als /root/backup.sh ausführe, funktioniert alles wie vorgesehen. Aber wenn es per Cron ausgeführt wird, passiert nichts.
grep CRON /var/log/syslog
zeigt, dass es ausgeführt wurde (19. Dez. 01:21:01 vps-8463 /USR/SBIN/CRON[1299]: (root) CMD (sh /root/backup.sh >/dev/null 2>&1) ), aber es wird kein Archiv erstellt. Cron-Aufgabe: 21 1 * * * sh /root/backup.sh >/dev/null 2>&1
Irgendwelche Ideen, warum das passiert?
Antwort1
Meine erste Vermutung ist, dass der Befehl mysqldump nicht im Pfad enthalten ist, wenn das Skript von cron ausgeführt wird. Versuchen Sie Folgendes:
which mysqldump
Nehmen Sie die Ausgabe und ersetzen Sie den gesamten Pfad durch den Befehlsnamen. Beispiel:
/usr/bin/mysqldump
stattmysqldump
Oder fügen Sie einer lokalen PATH-Variable etwas hinzu. Beispiel:
PATH=$PATH:/usr/bin
Dies löst auch Probleme tar
, wenn chown
, oder andere Befehle nicht im Standardpfad enthalten sind.