通过 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

相关内容