cron: отправка вывода в файл и отправка мне файла EMAILing - PullRequest
5 голосов
/ 28 марта 2011

Я пишу серию заданий cron.Я хочу, чтобы каждая задача записывала свои выходные данные в файл, а затем я хочу, чтобы содержимое файла отправлялось мне по почте, например, me@somewhere.com

Я думаю, что запись выходных данных в файл может быть выполнена с помощью простого перенаправления каналакак это:

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

Однако я не уверен, как отправить мне файлы (или просто их содержимое) в отдельных письмах на me@somewhere.com

Также есть лиспособ динамического создания имен файлов журнала на основе даты, чтобы имена журналов были примерно такими:% Y% m% d.task1.log?

Где префикс - это дата?

Я работаю на Ubuntu 10.0.4 LTS

1 Ответ

11 голосов
/ 28 марта 2011

Если в вашей системе работает /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
...