Cron 출력이 작동하지 않습니다

Cron 출력이 작동하지 않습니다

이 문제를 파악하는 데 도움이 필요합니다. 적절한 +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

관련 정보