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

标签 email bash ubuntu cron

我正在编写一系列 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 上运行

最佳答案

如果你的系统有一个可用的/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

关于email - cron:将输出发送到文件,然后通过电子邮件将文件发送给我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5455684/

相关文章:

windows - Net::SMTP:Net::Cmd::_ is_closed():命令 channel 上出现意外的EOF [perl]

c# - Blazor Wasm 发送邮件抛出异常 System.PlatformNotSupportedException : System.Net.Dns:GetHostByName 在此平台上不受支持

即时将 RSS 提要发送到电子邮件

json - 如何使用 jq 将 JSON 字符串格式化为表格?

c - 无法在 Ubuntu 14.04 上调试 libc 源

android - 当路径在根文件夹中时如何在 Ubuntu 中设置 Android Home

html - 从 Linux 服务器发送电子邮件作为 html - 内容类型和 html 标签在电子邮件中也可见

bash - 从一系列 PDF 中删除第一页

arrays - 在 bash 中搜索数组返回索引

linux - 在 quilt/dquilt 补丁 : patch applies correctly by hand, 中添加一个文件,但会破坏 debuild