`apachectl status` 间歇性出现“失败”错误

`apachectl status` 间歇性出现“失败”错误

我有一个 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

这不

相关内容