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

发布于 2024-10-27 08:47:06 字数 624 浏览 2 评论 0原文

我正在编写一系列 cron 作业。我希望每个任务将其输出记录到文件中,然后我希望将文件的内容邮寄给我,例如 [电子邮件受保护]

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

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

但是,我不确定如何将文件(或只是其内容)邮寄给我单独的电子邮件到 [email protected]

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

前缀是日期在哪里?

我正在 Ubuntu 10.0.4 LTS 上运行

I am writing a series of cron jobs. I want each task to log its output to file, and then I want the contents of the file mailed to me at say [email protected]

I think logging the output to file can be done using simple pipe redirection like this:

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

However, I am not sure how to mail the files (or simply their contents) to me in seperate emails to [email protected]

Also, is there a way to dynamically create the log file names, based on the date, so that the log names would be something like %Y%m%d.task1.log ?

Where the prefix is the date ?

I am running on Ubuntu 10.0.4 LTS

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无戏配角 2024-11-03 08:47:06

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

echo "hello world" | mail -s hello [email protected]

mail(1) 非常原始;没有 MIME 文件附件,您只能使用纯文本。

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

echo "hello world" | mutt -a task*.log -- [email protected]

至于给出日志文件日期:

$ 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") -- [email protected]

If your system has a working /usr/bin/sendmail (doesn't have to be sendmail sendmail, most mail servers provide a /usr/bin/sendmail wrapper script) then you can use the mail(1) utility to send mail:

echo "hello world" | mail -s hello [email protected]

mail(1) is pretty primitive; there's no MIME file attachments, you're stuck with plaintext.

If mutt(1) is installed, you can use MIME to attach files:

echo "hello world" | mutt -a task*.log -- [email protected]

As for giving the logfiles dates:

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

So, try this:

30 1 * * * /path/to/script2 > $(date "+\%Y\%m\%dlog.txt") && mutt -a $(date "+\%Y\%m\%dlog.txt") -- [email protected]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文