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

Электронная почта не отправляется, когда скрипт запущен CRON

Я написал простой сценарий резервного копирования bash, и в конце он отправляет мне электронное письмо о том, что резервная копия готова. Все работает отлично, когда я запускаю этот скрипт из терминала (root), но когда скрипт запускается CRON, электронная почта не отправляется: - /.

#!/bin/sh
filename=$(date +%d-%m-%Y)
backup_dir="/mnt/backup/"
email_from_name="BACKUP"
email_to="my@email"
email_subject="Backup is ready"
email_body_file="/tmp/backup-email-body.txt"

tar czf "$backup_dir$filename.tgz" "/home/www"

echo "Subject: $email_subject" > $email_body_file
ls $backup_dir -sh >> $email_body_file

sendmail -F $email_from_name  -t $email_to < $email_body_file

Cronjobs работают в минимальной среде, поэтому вы даже не можете предположить, что $PATH установлен правильно. Сценарий, вероятно, не может найти sendmail исполняемый файл. Устанавливать $PATH явно в crontab на что-то вроде этого или укажите полный путь к sendmail в сценарии.

PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin

Это проблема среды, нам нужно установить путь env в cron, как показано ниже

38 03 * * 5  /bin/ksh c ". /home/adcis/caliber/.profile ;
/home/xyz/abc/ABCD_BATCH/REPORT_ABC/amb_main_script.ksh" >> /home/xyz/abc/ABCD_BATCH/LOGS/output.txt