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

cronログを確認しました

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 から起動されると、PATH が bash から直接実行する場合よりもずっと短くなることです。

プログラムへの呼び出しを、たとえば (または exim をインストールした場所)/usr/sbin/eximではなく、完全なパスに置き換えるだけです。exim

関連情報