我注意到,在我的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
你应该在正常的启动中看到这样的东西
否则,至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。