我有一个 cron 作业,它运行一个 perl 脚本来检查 apache 的状态:
my $status = `sudo apachectl status`;
cron 任务每分钟运行一次,没有任何问题。但是,迟早我会收到来自 cron 任务的以下电子邮件错误:
'www-browser --dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars
如果我从命令行运行此命令,也会产生错误:
www-browser --dump http://localhost:80/server-status
然而,特别奇怪的是,apache 报告生成得很好,只是在报告末尾出现了上面显示的错误。
有谁知道如何解释这种行为以及如何让 apache 不产生这个错误?
答案1
有点如果跟踪似乎表明这是因为 awk 习语最终get_status()
用 SIGPIPE 过早杀死 lynx 而产生的消息,从而生成一个非零的退出代码。
在 /usr/sbin/apache2ctl 中:
status)
get_status | awk ' /process$/ { print; exit } { print } '
;;
你可以用以下方式复制此行为
~$ if ! www-browser -dump http://localhost:80/server-status ; then
echo "'$LYNX $STATUSURL'" failed. >&2;
echo Maybe you need to install a package providing www-browser or you >&2;
echo need to adjust the APACHE_LYNX variable in /etc/apache2/envvars >&2;
fi | awk ' /process$/ { print; exit } { print } '
生成消息,与
~$ if ! www-browser -dump http://localhost:80/server-status ; then
echo "'$LYNX $STATUSURL'" failed. >&2;
echo Maybe you need to install a package providing www-browser or you >&2;
echo need to adjust the APACHE_LYNX variable in /etc/apache2/envvars >&2;
fi
这不