it-swarm.com.de

Cron Job - So senden Sie eine Ausgabedatei an eine E-Mail

Ich habe diese Zeile in Crontab:

* * * * * /var/www/dir/sh/mysql_dumb.sh | mail -s "mysql_dump" [email protected]

(jede Minute nur eine Probe)

Alles funktioniert gut, aber die E-Mail ist leer.

UPDATE:

Die Ausgabe von mysql_dumb.sh ist eine *.sql-Datei, die die Datei in einem Verzeichnis speichert.

Wie kann ich eine Kopie (* .sql-Datei) von dieser Ausgabe -> mysql_dumb.sh an meine E-Mail senden?

mysql_dumb.sh:

#!/bin/bash
PATH=/usr/bin:/bin
Shell=/bin/bash
/usr/bin/mysqldump -u USER -pPASS DATABASE > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
20
Black Sheep

Wenn das Skript Fehler meldet, gehen sie möglicherweise zu stderr, aber Sie leiten nur stdout. Sie können stderr umleiten, indem Sie dem Befehl 2>&1 hinzufügen:

* * * * * /var/www/dir/sh/mysql_dump.sh 2>&1 | mail -s "mysql_dump" [email protected]
38
Barmar

Aus einer Crond-Perspektive ist es genauer, in Ihrem cron zu platzieren:

[email protected]
* * * * * /var/www/dir/sh/mysql_dumb.sh
* * * * * /var/www/dir/sh/other.sh
* * * * * /var/www/dir/sh/other2.sh
25
Dimitrios

Schauen Sie sich die letzte Zeile von mysql_dumb.sh:/usr/bin/mysqldump -u USER -pPASS DATABASE > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql an.

Der > leitet die Ausgabe von mysqldump in die Datei /var/www/dir/backup/backup_DB_date +% d_% m_% Y.sql um.

Möchten Sie eine Sicherung der Datenbank lokal speichern?

Wenn nicht, nehmen Sie den > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql heraus und setzen Sie den crontab-Eintrag wieder auf 

* * * * * /var/www/dir/sh/mysql_dump.sh 2>&1 | mail -s "mysql_dump" [email protected]

Wenn Sie eine Kopie der Datei lokal wünschen, würde ich vorschlagen, tee zu verwenden, die die Ausgabe in die Datei schreibt und die Ausgabe wieder auf stdout setzt, die später von crontab abgerufen wird.

Ich würde die letzte Zeile von mysql_dumb.sh folgendermaßen ändern: /usr/bin/mysqldump -u USER -pPASS DATABASE | tee /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql

Ich würde den crontab-Eintrag wieder in: /usr/bin/mysqldump -u USER -pPASS DATABASE > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql ändern.

Der Vorteil hier ist, dass Mail die Informationen aus stdout lesen kann und nicht davon abhängig ist, dass die Datei geschrieben wird, und dann korrekt gelesen wird. Während dies ein kleiner Unterschied sein kann, wird die Verwendung von T-Shirts meiner Erfahrung nach zuverlässiger sein.

2
W3t Tr3y