Necesito ayuda para resolver esto. Tengo el siguiente script: /root/eximqueue.sh con los derechos +x adecuados, etc.:
#!/bin/bash
######### Edit here ##########
[email protected] # Set this to your email id to receive alerts on mail queue
_limit=20 # Set the limit here
##############################
clear;
_result="/tmp/eximqueue.txt"
_queue="`exim -bpc`"
if [ "$_queue" -ge "$_limit" ]; then
echo "Current queue is: $_queue" > $_result
echo "Summary of Mail queue" >> $_result
echo "`exim -bp | exiqsumm`" >> $_result
mail -s "Number of mails on `hostname` : $_queue" $_mail_user < $_result
cat $_result
_message_id="`exiqgrep -i -f [email protected] | xargs exim -M`"
fi
rm -f $_result
Luego configuré el cron, revisé mis crons (crontab -l) y está ahí:
*/5 * * * * /bin/sh /root/eximqueue.sh
Revisé mis registros cron
grep eximqueue /var/log/cron
...y está ejecutándose (sólo algunos ejemplos):
Oct 12 14:00:01 osi CROND[28191]: (root) CMD (/bin/sh /root/eximqueue.sh)
Oct 12 14:05:01 osi CROND[30877]: (root) CMD (/bin/sh /root/eximqueue.sh)
Oct 12 14:10:01 osi CROND[893]: (root) CMD (/bin/sh /root/eximqueue.sh)
Oct 12 14:15:01 osi CROND[4429]: (root) CMD (/bin/sh /root/eximqueue.sh)
¡El problema es que no recibo ningún correo electrónico del script! Sin embargo, si lo ejecuto directamente, funciona perfectamente y recibo el correo electrónico. ¿Ideas?
Respuesta1
El problema es que cuando un script comienza desde cron, la RUTA es mucho más corta que cuando lo ejecutas directamente desde bash.
Simplemente reemplace las llamadas al programa por la ruta completa hacia ellas. /usr/sbin/exim
en lugar de exim
por ejemplo (o donde haya instalado exim).