Ubuntu – Email is not sending when the script is running by CRON

cronsendmailUbuntu

I wrote the simple backup bash script and at the end of it, it's sending an email to me that backup is ready. Everything works perfect when I run this script from terminal (root), but when the script is running by CRON, email is not sending :-/.

#!/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

Best Answer

Cronjobs run in a minimal environment, so you can't even assume that $PATH is set correctly. The script is probably failing to find the sendmail executable. Set $PATH explicitly in the crontab to something like this, or specify the full path to sendmail in the script.

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