Mailx または mail コマンドが crontab 経由で実行されたときに本文が含まれない

Mailx または mail コマンドが crontab 経由で実行されたときに本文が含まれない

Apache サーバーのプロセスをチェックし、プロセスがダウンしている場合は電子メールを送信するスクリプトを作成しました。

apache_down=`service httpd status | grep "inactive (dead)"`
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]

スクリプトを手動で実行すると正常に動作し、正しい件名と本文「$apache_down」を含むメールを送信します。

しかし、これを crontab の下に配置すると、本文ではなく件名だけが含まれたメールが送信されます。

*5 * * * * script.sh >/dev/null 2>&1

本文は空で、"" のみです。mail -s を使用しましたが、結果は同じでした。これはスクリプト、crontab、または mailx の設定の問題でしょうか。

答え1

チェックしてください$PATH変数がコマンド実行用に適切に設定されている場合は設定し、そうでない場合はスクリプト内または一般的にはcron用に設定します。$PATHがバイナリ用に適切に設定されていない場合は、サービスコマンドは実行されないか、次のように実行して手動で追加する必要があります。/usr/sbin/サービス

また、スクリプト内に変数に何らかの出力があるかどうかのチェックを追加してみてください...

if [[ -n "$apache_down" ]]
then
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]
else
echo "apache running fine" | mailx -s “APACHE_Running_`hostname`” [email protected]
fi

関連情報