2011-03-28 111 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

相關問題