Cron作业 - 如何将输出文件发送到电子邮件

Bla*_*eep 27 cron crontab

我在crontab中有这一行:

* * * * * /var/www/dir/sh/mysql_dumb.sh | mail -s "mysql_dump" example@mail.com
Run Code Online (Sandbox Code Playgroud)

(每分钟只有一个样本)

所以,一切正常,但电子邮件是空的.

更新:

mysql_dumb.sh的输出是一个*.sql文件,它们将文件保存在目录中.

如何从此输出发送副本(*.sql文件) - > mysql_dumb.sh到我的电子邮件?

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
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 42

如果脚本报告错误,它们可能会发生错误stderr,但您只是重定向stdout.您可以stderr通过添加2>&1命令来重定向:

* * * * * /var/www/dir/sh/mysql_dump.sh 2>&1 | mail -s "mysql_dump" example@mail.example
Run Code Online (Sandbox Code Playgroud)

  • 为什么不在脚本中放置`cat XXX.sql`,以便文件的内容包含在电子邮件中? (2认同)

Dim*_*ios 36

从crond的角度来看,更准确的是放入你的cron:

MAILTO=example@mail.com
* * * * * /var/www/dir/sh/mysql_dumb.sh
* * * * * /var/www/dir/sh/other.sh
* * * * * /var/www/dir/sh/other2.sh
Run Code Online (Sandbox Code Playgroud)

  • 这将发送电子邮件给crontab中的所有条目,而不仅仅是一行。 (2认同)