Das Skript führt bei der Ausführung mit Cron nicht das gewünschte Ergebnis aus

Das Skript führt bei der Ausführung mit Cron nicht das gewünschte Ergebnis aus

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/syslogzeigt, 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/mysqldumpstattmysqldump

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.

verwandte Informationen