Почему некоторые из моих заданий cron не отправляют электронные письма?

1787
118218

Для отправки писем я использую стандартную конфигурацию с:

MAILTO="example@gmail.com" 

Вот содержание моего crontab:

00 3 * * 2 echo "Internal Backup (mysql) has started!" && tar -zvcf /home/backups/sql/01_MondaySQL.tgz /home/mysql/automysqlbackup 00 4 * * 2 echo "Internal Backup (www/dev) has started!" && tar -zvcf /home/backups/www/daily/01_Monday_www_dev.tgz /home/www/dev 

Первая работа работает отлично. Когда он закончится, я получаю электронное письмо с темой:

"echo" Внутреннее резервное копирование (mysql) запущено! "&& tar -zvcf /home/backups/sql/01_MondaySQL.tgz / home / mysql / automysqlbackup"

И письмо содержит список всех файлов, заархивированных во время работы.

Я хотел бы точно так же для второй линии. Несмотря на то, что эта вторая работа выполнена хорошо (архив 01_MondaySQL.tgz создан), я не получаю письмо по поводу работы.

Я сталкиваюсь с той же проблемой с некоторыми заданиями rsync. Например, эта работа отлично работает:

00 16 * * * echo "Mobile Backup has started!" && rsync --delete -aPvz -e "ssh -i /root/.sshkeys/diskstation-rsync-key" /home/backups/mobile/ root@www.example.com:/volume1/Backups/mobile/ 

Но у этого есть та же самая проблема (никакие электронные письма не отправлены):

00 14 * * * echo "Desktop Backup has started!" && rsync --delete -aPvz -e "ssh -i /root/.sshkeys/diskstation-rsync-key" /home/backups/desktop/ root@www.example.com:/volume1/Backups/desktop/ 

Я проверил логи, но ничего не кажется подозрительным.

0
Вы проверяли почтовые журналы в это время, чтобы увидеть, было ли отправлено письмо? Я также попытался бы изолировать это, удалив строку MAILTO, чтобы электронные письма доставлялись пользователю cron. Вы можете проверить локальную почту с помощью команды «mail». Ricardo 9 лет назад 0
Письма не отправляются, они не отображаются в журнале почты. Я пытаюсь без линии MAILTO 118218 9 лет назад 0
Я удалил строку MAILTO, но ничего не изменилось. 118218 9 лет назад 0
тогда у вас есть проблема с выводом, который не будет обработан stdout в вашей работе cron. Мое предпочтение для этого типа работы, которая требует подтверждения по электронной почте, состоит в том, чтобы поместить ее в сценарий оболочки, а в конце просто отправить письмо из сценария. Смотрите пример в моем ответе. Ricardo 9 лет назад 0

1 ответ на вопрос

0
Ricardo

у вас, похоже, есть проблема с stdout, так как именно там Cron решает отправлять электронную почту на нет. Если нет вывода, то cron не отправляет электронное письмо.

Я бы предпочел поместить все в скрипт следующим образом:

echo "Mobile Backup has started!" tar -zvcf /home/backups/sql/01_MondaySQL.tgz /home/mysql/automysqlbackup > /home/report.txt mail -s 'backup Report' example@gmail.com < /home/report.txt 

и ваш хрон просто назвал бы этот сценарий.

Похожие вопросы