2011-03-28 70 views
5

我在写一系列cron作业。我希望每个任务将其输出记录到文件,然后我想要文件的内容邮寄给我me [email protected]cron:发送输出到文件,然后将电子邮件发送给我

我认为将输出记录到文件可以使用这种简单的管道重定向来完成:

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

但是,我不知道如何将文件(或简单的内容)发邮件给我在单独的电子邮件给[email protected]

此外,有没有一种方法来动态创建日志文件的名称,基于日期,以便日志名称将类似于%Y%m%d.task1.log?

哪里的前缀是日期?

我在Ubuntu LTS 10.0.4运行

回答

11

如果你的系统有一个工作/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] 
+1

的'%'字符在使用cron脚本之前需要被转义。这导致我今天的各种问题;) – oompahloompah 2011-03-29 15:00:56

+0

@ommpahloompah,cripes,对不起。 :( – sarnold 2011-03-29 20:39:36

相关问题