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

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/

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

1 ответ1

0

у вас, похоже, есть проблема с 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .