Надсилання пошти через cron не працює


2

У нас є сценарій rsync для створення резервної копії з сервера 1 на сервер 2. Сервер типу Centos, Amazon Linux AMI. Сценарій виконується щодня через crontab. Резервне копіювання зроблено, тому cron працює і сценарій працює. Журнал створюється і повинен бути надісланий нам поштою. Це не відбувається з якихось причин. Якщо я запускаю скрипт вручну, пошта надсилається, тому сервер пошти (Postfix) працює, а також скрипт пошти в кінці сценарію rsync також працює. Нижче ви бачите сценарій rsync:

ехо "До: john@testdomain.info"> /tmp/rsync_test.log
ехо "Від: server@testdomain.info" >> /tmp/rsync_test.log
echo "Тема: Testmail >> /tmp/rsync_test.log
echo "" >> /tmp/rsync_test.log
кішка /tmp/rsync_test.log | sendmail -t

Чому це не працює і як це можна виправити?


Чи /tmp/rsync_test.logіснує файл ? Чи sendmailдвійковий знаходиться в $PATH?
Ansgar Esztermann

Файл все ще існує. Використовуючи locate sendmailя знаходжу /usr/lib/sendmail,/usr/lib/sendmail.postfix,/usr/sbin/sendmail,/usr/sbin/sendmail.postfix. $ PATH:, /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/binтак це має працювати. Я можу виконати sendmailз командного рядка. І пам’ятайте, що сценарій працює при виконанні вручну.
SPRBRN

Відповіді:


4

Завдання Cron виконуються в обмеженому середовищі Зокрема, змінна PATH env не може містити шлях до кота чи sendmail

Спробуйте вказати повний шлях:

/bin/cat /tmp/rsync_test.log | /usr/sbin/sendmail -t

Це моя здогадка.

Якщо ви хочете дізнатися точну причину, зафіксуйте stdout та stderr сценарію crontask у файлі журналу під час встановлення кронацка

*/5 * * * * /your/scripts/task.sh >/somepath/file.log 2>&1

там він повідомить вам повідомлення про помилку

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.