当脚本由 CRON 运行时,电子邮件未发送

当脚本由 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

答案1

Cronjobs 在最小环境中运行,因此您甚至不能假设它$PATH已正确设置。脚本可能无法找到sendmail可执行文件。$PATH在 crontab 中明确设置为类似这样的内容,或sendmail在脚本中指定完整路径。

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

答案2

这是环境问题,我们需要在 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

相关内容