Я написал простой сценарий резервного копирования 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