cron:将输出发送到文件,然后将EMAILing文件发送给我

时间:2011-03-28 07:08:14

标签: email bash ubuntu cron

我正在写一系列的cron工作。我希望每个任务都将其输出记录到文件中,然后我想将文件的内容邮寄给我,请说me@somewhere.com

我认为将输出记录到文件可以使用简单的管道重定向完成,如下所示:

30 0 * * * /path/to/script1 > task1.log
30 1 * * * /path/to/script2 > task2.log

但是,我不知道如何通过单独的电子邮件将文件(或仅仅是他们的内容)邮寄给我me@somewhere.com

另外,有没有办法根据日期动态创建日志文件名,以便日志名称类似于%Y%m%d.task1.log?

前缀是哪个日期?

我在Ubuntu 10.0.4 LTS上运行

1 个答案:

答案 0 :(得分:11)

如果您的系统有效/usr/bin/sendmail(不一定是 sendmail sendmail,大多数邮件服务器提供/usr/bin/sendmail包装脚本)那么您可以使用mail(1)实用程序发送邮件:

echo "hello world" | mail -s hello me@example.com

mail(1)非常原始;没有MIME文件附件,你会遇到明文。

如果安装了mutt(1),您可以使用MIME附加文件:

echo "hello world" | mutt -a task*.log -- me@example.com

至于提供日志文件日期:

$ echo "hi" > $(date "+%Y%m%dlog.txt")
$ cat 20110328log.txt              
hi
$

所以,试试这个:

30 1 * * * /path/to/script2 > $(date "+\%Y\%m\%dlog.txt") && mutt -a $(date "+\%Y\%m\%dlog.txt") -- me@example.com