当CRON运行脚本时,电子邮件不会发送

我写了简单的备份bash脚本,最后发送一封电子邮件给我,备份已经准备就绪。 当我从terminal(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设置正确。 该脚本可能无法findsendmail可执行文件。 在crontab中显式设置$PATH为这样的东西,或者在脚本中指定sendmail的完整path。

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

这是环境问题,我们需要在cron中设置envpath如下

 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