OSX如何在终端中显示apache状态?


11

我注意到,在我的linux服务器上,当我键入apachectl restart时,它给了我很少但有用的反馈,例如restartingand然后[ok][fail]该行的结尾。数量不多,但是至少我知道发生了什么,而且我可以检查日志。

在我的OS X上,我什么也没得到。仅在下一行:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

如何启用这些“调试”功能?


我不熟悉OS X,但是您可以编辑init脚本来添加echo一行。
量子

该脚本在哪里?我应该添加到哪一行echo?抱歉,我是新来的,需要详细信息:\
mgPePe 2011年

我不是OS X方面的人,但是也许它只是遵循Unix的“没有新闻就是好消息”的哲学,并且只有在出了什么问题时才开始na你。
Janne Pikkarainen

嗯,静音错误无济于事,所以我不是真正的粉丝
mgPePe 2011年

请发布的内容/usr/sbin/apachectl
量化

Answers:


5

在apachectl包装脚本中,如何在最后贴上类似的内容。

tail -5 /var/log/httpd/error_log

您应该在正常启动时看到类似这样的内容

  • [2011年4月22日星期五23:39:20] [公告]摘要:为
    摘要身份验证生成机密...
  • [2011年4月22日星期五23:39:20] [注意]摘要:已完成
  • [2011年4月22日星期五23:39:20] [警告] pid文件
    /mlk/apache/pid/httpd.pid被覆盖-先前Apache运行时不干净的关机?
  • [2011年4月22日星期五23:39:20] [注意]已配置Apache / 2.0.63(Unix)DAV / 2- 恢复正常操作

否则,任何错误至少应在此处部分显示。上面显示了关键词。

附加:/ usr / sbin / apachectl由root拥有,您必须是特权用户才能执行此操作。须藤vi / usr / sbin / apachectl

移至文件末尾并将其插入“ esac”和“ exit $ ERROR”行之间。即。

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

请注意,无论您对脚本执行什么操作,停止启动,重新启动,这都会打印出最后几行。您可能只希望将其放在case语句的开始部分。


听起来可能是一种解决方案。以及如何附加它,以便它随每个重新启动命令自动执行?
mgPePe 2011年

不得不在家里ssh进入我的macos服务器以查看/ usr / bin / apachectl在上面的答案中查找,我已经添加了编辑文件的命令。
迈克尔·亨利

30

我在Mac上也有同样的问题。每当我尝试启动apache并没有任何反应时,我立即运行此命令。就我而言,问题似乎总是在apache配置文件中。

apachectl configtest

谢谢你 我本人就遇到这个问题,结果发现对自制SQLite的更新导致自制PHP引发了Apache错误,该错误仅在configtest中未显示。
AlexMax 2013年

谢谢你,谢谢你,谢谢你!!!这才救了我的理智!!!
最后

1
该命令的简短版本是apachectl -t
equiman '17

该命令将告诉您Apache httpd配置(httpd.conf)是否没有语法错误。要查看该进程是否正在运行,可以运行“ htop”,然后运行F4以对“ httpd”进行过滤,以查看由httpd产生的所有进程。
Puneet Lamba

8

apachectl在Mac上,它们是一些launchctl命令的包装(只需查看文件即可)。不幸的是,当starting出现问题时,launchctl不会退出并显示错误代码httpd,因此即使尝试这样做,脚本也无法轻松显示任何内容。

您可以执行的基本检查是在apachectl start命令后检查Apache进程是否存在 。

ps aux | grep httpd

在某种程度上,您是在说:“您无法在macosx上设置此类调试信息,但这是您可以检查apache服务器是否正在运行的方式”,对吗?
mgPePe'8

是的,就是这样。
斯文

0

在macOS上使用netstat命令显示所有网络连接。您只能过滤“监听”连接并查看http(s)服务器。

您可以使用以下代码创建bash文件:

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

服务器停止时的结果sudo apachectl -k stop将是:

Apache server is not running

服务器运行时的结果sudo apachectl -k stop将是:

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

在此示例中,我有两台服务器在运行,一台使用https,另一台使用http。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.