minutos - Cron Job-Cómo enviar un archivo de salida a un correo electrónico
instalar crontab ubuntu (3)
Desde una perspectiva crond, más precisa es colocarla en tu cron:
[email protected]
* * * * * /var/www/dir/sh/mysql_dumb.sh
* * * * * /var/www/dir/sh/other.sh
* * * * * /var/www/dir/sh/other2.sh
Tengo esta línea en crontab:
* * * * * /var/www/dir/sh/mysql_dumb.sh | mail -s "mysql_dump" [email protected]
(cada minuto solo una muestra)
Entonces, todo funciona bien, pero el correo electrónico está vacío.
ACTUALIZAR:
La salida de mysql_dumb.sh es un archivo *.sql
y guardan el archivo en un directorio.
¿Cómo puedo enviar una copia (archivo * .sql) desde esta salida -> mysql_dumb.sh
a mi correo electrónico?
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
Mire la última línea de mysql_dumb.sh: /usr/bin/mysqldump -u USER -pPASS DATABASE > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
El >
está redirigiendo la salida de mysqldump
al archivo /var/www/dir/backup/backup_DB_
date +% d_% m_% Y .sql
¿Desea almacenar una copia de seguridad de la base de datos localmente?
De lo contrario, > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
el > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
y > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
colocar la entrada crontab en
* * * * * /var/www/dir/sh/mysql_dump.sh 2>&1 | mail -s "mysql_dump" [email protected]
Si desea una copia del archivo localmente, sugeriría usar tee
que escribirá la salida en el archivo y volverá a colocar la salida en la salida estándar, que luego será recogida por crontab.
Cambiaría la última línea de mysql_dumb.sh
para que sea: /usr/bin/mysqldump -u USER -pPASS DATABASE | tee /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
/usr/bin/mysqldump -u USER -pPASS DATABASE | tee /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
De nuevo, cambiaría la entrada de crontab a: /usr/bin/mysqldump -u USER -pPASS DATABASE > /var/www/dir/backup/backup_DB_`date +%d_%m_%Y`.sql
La ventaja aquí es que el correo puede leer la información de la salida estándar y no depende del archivo que se está escribiendo y luego leer correctamente. Si bien esa puede ser una pequeña diferencia, en mi experiencia usar tee será más confiable.
Si la secuencia de comandos informa de errores, es posible que se stderr
a stderr
, pero solo está redireccionando stdout
. Puede redireccionar stderr
agregando 2>&1
al comando:
* * * * * /var/www/dir/sh/mysql_dump.sh 2>&1 | mail -s "mysql_dump" [email protected]