Le courrier électronique n'émet pas lorsque le script est en cours d'exécution par CRON

J'ai écrit le simple script bash de sauvegarde et, à la fin de celui-ci, il m'envoie un courrier électronique que la sauvegarde est prête. Tout fonctionne parfaitement lorsque je lance ce script à partir du terminal (racine), mais lorsque le script est en cours d'exécution par CRON, le courrier électronique n'envoie pas: – /.

#!/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 s'exécute dans un environnement minimal, donc vous ne pouvez même pas supposer que $PATH soit correctement configuré. Le script est probablement incapable de find l'exécutable sendmail . Définissez $PATH explicitement dans le crontab à quelque chose comme ça, ou spécifiez le path complet vers sendmail dans le script.

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

C'est le problème de l'environnement, nous devons définir le path env dans cron comme ci-dessous

 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