이 문제를 파악하는 데 도움이 필요합니다. 적절한 +x 권한 등을 가진 /root/eximqueue.sh 스크립트가 있습니다.
#!/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
그런 다음 cron을 설정하고 내 cron(crontab -l)을 확인했는데 거기에 있습니다.
*/5 * * * * /bin/sh /root/eximqueue.sh
내 크론 로그를 확인했습니다.
grep eximqueue /var/log/cron
...그리고 실행 중입니다(예를 들어 몇 가지만 설명).
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)
문제는 스크립트로부터 어떤 이메일도 받지 못한다는 것입니다! 그러나 직접 실행하면 완벽하게 작동하고 이메일을 받습니다. 아이디어?
답변1
문제는 스크립트가 cron에서 시작될 때 bash에서 직접 실행할 때보다 PATH가 훨씬 짧다는 것입니다.
프로그램에 대한 호출을 전체 경로로 바꾸십시오. 예를 들어(또는 exim을 설치한 곳) /usr/sbin/exim
대신에 .exim