2017-12-21 9 views
0

Ich bin ein Cron-Job, der ein SH-Skript mit dem folgenden Code aufruft. Ich habe bemerkt, dass es manchmal funktioniert, aber manchmal bekomme ich eine 0KB Datei. Ich habe keine Ahnung, was diese 0KB verursachen könnte oder was getan werden könnte, um das zu beheben.mysqldump gibt manchmal empy-Datei zurück

DATE=`date +%Y-%m-%d-%H-%m` 
NAME=bkp-server-207-$DATE.sql.gz 
mysqldump -u root [email protected] xxxx | gzip > /media/backup_folder/$NAME 
+0

Sie sollten überprüfen, dass die mysqldump erfolgreich war. Wenn es einen Fehler verursacht (wie Ihr Passwort falsch war, oder die benannte Datenbank nicht existiert), wird es keine Ausgabe auf stdout haben, deshalb erzeugt das gzip 0 Bytes. Ein Fehler wird angezeigt, wenn der Beendigungsstatus ('$?') Als ungleich Null zurückgegeben wird. –

+0

Eine andere Möglichkeit: Der Dump wurde als 0KB-Datei erstellt, weil das Dateisystem, zu dem Sie schreiben wollten, zum Zeitpunkt des Backups voll war (auch wenn es nicht mehr voll ist, wenn Sie es betrachten). Unabhängig von der Ursache ist es wichtig, eine Fehlerüberprüfung in Ihrem Backup-Skript durchzuführen. –

+0

Das Skript ist definitiv nicht das Problem, weil es die meiste Zeit gelingt. Ich lasse es jede Nacht laufen. In einer Woche schaffte es 5 und scheiterte zweimal (0KB). Der Speicherplatz ist auch nicht das Problem. Es sind nur ein paar hundert k Bytes, und die Festplatte hat mehrere freie GB Speicherplatz. Irgendwelche anderen Vermutungen? Könnten Sie mir bei der Fehlerprüfung helfen? – yurividal

Antwort

0

Sie müssen um herauszufinden, warum der Befehl fehlschlägt. Die Standardausgabe eines Cron-Jobs ist verloren, es sei denn, Sie leiten sie in eine Datei um und prüfen sie später.

Sie können ihn unter der cron Ebene log (siehe http://www.thegeekstuff.com/2012/07/crontab-log/)

59 23 * * * /home/john/bin/backup.sh >> /home/john/logs/backup.log 2>&1 

Die 2>&1 Falten stderr in die stdout, so beide gespeichert werden.

Oder können Sie bestimmte Befehle in Ihrem Skript log:

echo "Creating $NAME" >>/home/john/logs/backup.log 
mysqldump -u root [email protected] xxxx 2>>/home/john/logs/backup.log | gzip > /media/backup_folder/$NAME 

Sobald Sie den Fehlerausgang haben, sollten Sie wichtige Hinweise auf die Ursache des Fehlers haben.

Verwandte Themen