我创建了一个脚本来检查 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