OSX如何在terminal中显示apache状态?

我注意到,在我的Linux服务器上,当我inputapachectl重新启动,它给了我很less,但有用的反馈,如restarting ,然后[ok][fail]在行末。 不多,但至less我知道发生了什么,我可以去查看日志。

在我的OS X上,我什么也得不到。 只是立即下一行:

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

我怎样才能启用这些“debugging”function?

在apachectl包装器脚本中,如何在最后插入类似的东西。

 tail -5 /var/log/httpd/error_log 

你应该在正常的启动中看到这样的东西

  • [星期五4月22日23:39:20 2011] [通知]摘要:产生秘密
    摘要authentication…
  • [周五4月22日23:39:20 2011] [通知]摘要:完成
  • [Fri Apr 22 23:39:20 2011] [警告] pid文件
    /mlk/apache/pid/httpd.pid覆盖 – 以前的Apache运行不正常关机?
  • [星期五四月22 23:39:20 2011] [通知] Apache / 2.0.63(Unix)DAV / 2configuration – 恢复正常操作

否则,至less应该在这里显示部分错误。 关键在于以上。

其他:/ usr / sbin / apachectl属于root用户,您必须是特权用户才能执行此操作。 sudo vi / usr / sbin / apachectl

移动到文件末尾并在“esac”和“exit $ ERROR”行之间插入。 即。

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

注意这将打印出最后几行,不pipe你对脚本采取什么行动,停止启动,重新启动。 你可能只想把它放在case语句的开始部分。

我的Mac上有同样的问题。 当我试图启动Apache并没有发生任何事情时,我立即运行此命令。 在我的情况下,问题似乎总是在Apacheconfiguration文件。

 apachectl configtest 

Mac上的apachectl是一些launchctl命令的包装(只需查看文件)。 不幸的是,当启动httpd出现问题时,launchctl不会退出,并显示错误代码,所以脚本没有简单的方法来显示任何东西,即使它尝试。

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

 ps aux | grep httpd 

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

你可以用下面的代码创build一个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时的结果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。