Назад | Перейти на главную страницу

Когда cron завершен Как получить уведомление по электронной почте и войти в файл (оба)

Я новичок в Linux. Я пытаюсь во всем разобраться. Может ли кто-нибудь любезно помочь мне, как объединить эти две команды?

(1) Обычно результаты cron можно направить в файл журнала, отредактировав crontab следующим образом.

*/10 * * * * /scripts/mysc.sh >> /home/ara/Desktop/test/log.txt 2>&1 

(2) и в случае, если нам нужны результаты cron в качестве электронных писем, мы можем использовать MAILTO=someemail@domain.com Такие как

MAILTO=someemail@domain.com
*/10 * * * * /scripts/mysc.sh

Но как совместить оба варианта (1) и (2)? Я видел, что в некоторых пространствах веб-хостинга обе опции включены одновременно. Я провел свое исследование / поиск в Google, но не смог. Я использую centos 6.5 и использую crontab -e редактировать.

В вашем первом примере в файл отправляются как stderr, так и stdout (2> & 1); переменная MAILTO, установленная в cron, будет захватывать любой вывод, который не перенаправляется, и это в сочетании с направлением вывода в файл означает, что cron недоступен для отправки по электронной почте.

Я бы предложил использовать tee для добавления вывода в файл, а также для отправки его на стандартный вывод; этот ответ - https://serverfault.com/a/472878/102867 - очень похоже на то, чего вы просите добиться.

В качестве альтернативы, следуйте предложению в первом ответе и напишите сценарий-оболочку для более изящной обработки вывода сценария, и тогда вы можете как регистрировать, так и отправлять вывод своего сценария по почте.

Cronjob для журнала и электронной почты:

Выполнять раз в месяц в полночь первого числа месяца: 0 0 1 * *

0 0 1 * * /home/User/script.sh > /home/User/cronlog/`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log 2>&1 ; mailx -s "CronJob is run successfully" someone@domain.com,someone1@domain.com