cron:将输出发送到文件,然后通过电子邮件将文件发送给我

Posted

技术标签:

【中文标题】cron:将输出发送到文件,然后通过电子邮件将文件发送给我【英文标题】:cron: sending output to file then EMAILing file to me 【发布时间】:2011-07-24 06:19:56 【问题描述】:

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

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

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

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

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

前缀是日期在哪里?

我在 Ubuntu 10.0.4 LTS 上运行

【问题讨论】:

【参考方案1】:

如果您的系统有一个有效的/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

【讨论】:

在 cron 脚本中使用之前,需要对 '%' 字符进行转义。这给我今天带来了各种各样的问题;) @ommpahloompah,绉纱,对不起。 :(

以上是关于cron:将输出发送到文件,然后通过电子邮件将文件发送给我的主要内容,如果未能解决你的问题,请参考以下文章

如果命令输出重定向到日志文件,则cron停止发送错误邮件

将“top”和“df -h”命令输出到日志文件,然后发送到我的电子邮件

如何记录 cron 作业?

将核心数据输出到 CSV 文件 ios7 [关闭]

通过弹性 beantalk 部署的 Node 应用程序的问题

通过 docker 日志查看 cron 输出,无需使用额外文件