0

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
1
  • 1
    -t means extract recipients from message headers. -F sets the fullname of the sender and -f sets the envelope sender address.
    – adamo
    Jul 6, 2012 at 20:54

2 Answers 2

2

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
5
  • and after setting path add export PATH in the very next line
    – adamo
    Jul 6, 2012 at 20:45
  • @adamo Not in crontabs.
    – mgorven
    Jul 6, 2012 at 20:49
  • Yep! I missed that part. Diagonally I assumed that you meant that he should set PATH in his script.
    – adamo
    Jul 6, 2012 at 20:51
  • Yea! You're right! I changed "sendmail" to "/usr/sbin/sendmail" and it works perfect now! Thanks
    – badam
    Jul 7, 2012 at 13:05
  • You should accept this as the answer: meta.stackexchange.com/questions/5234/…
    – MECU
    Jan 8, 2013 at 19:27
1

This is the environment issue , we need to set the env path in cron as below

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .