crontabを介してトリガーされると、Mailxまたはmailコマンドに本文は含まれません。

crontabを介してトリガーされると、Mailxまたはmailコマンドに本文は含まれません。

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

調査する$パスコマンドを実行するために変数が正しく設定されている場合は、スクリプトまたは通常は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

おすすめ記事