2011-03-28 4 views
5

일련의 cron 작업을 작성 중입니다. 각 작업이 파일에 출력을 기록한 다음 [email protected]으로 메일의 내용을 보내 주길 원합니다.cron : 파일로 출력 보내기 다음 이메일로 파일 보내기

출력을 로깅하는 것이 간단한 파이프 리디렉션을 사용하여 수행 할 수 있다고 생각합니다. :

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

그러나, 나는 또한

[email protected]하기 위해 별도의 이메일에 나에게 파일 (또는 간단히 그 내용을) 우송하는 방법을 잘 모르겠습니다, 동적을 만드는 방법이있다 로그 파일 이름은 날짜를 기반으로하므로 로그 이름은 % Y % m % d.task1.log와 같을 것입니다.

여기서 접두사는 날짜입니까?

나는 우분투 10.0.4 LTS에서 실행하고

답변

11

시스템이 갖고 있으면 /usr/bin/sendmail 작업 (센드 메일sendmail는, 대부분의 메일 서버가 /usr/bin/sendmail 래퍼 스크립트를 제공 할 필요가 없습니다) 당신은을 사용할 수 있습니다 mail(1) 유틸리티가 보내는 메일 :

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

mail(1)은 매우 원시적이다; MIME 파일 첨부가 없으며 일반 텍스트가 붙어 있습니다. 로그 파일 날짜를주는 것처럼

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

: mutt(1)가 설치되어

경우 파일을 첨부 할 MIME을 사용할 수 있도록

$ 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

+0

@ommpahloompah, cripes, 미안해. :( – sarnold