apache2不会在ubuntu 9.10服务器上启动 – 为什么?

我的问题是三重的:
1)我怎么知道这里发生了什么,
2)我如何防止它再次发生,以及
3)我可以configurationMonit检测并重新启动服务器,如果它再次发生?

以下是发生的事情:

我今天早上托pipe在Ubuntu 9.10 RackSpace云服务器上的apache2服务器已经closures了 – 重启失败了(是的,我应该做一个开始 – 但是如果没有服务器停止,重启就会开始。如下:

user@host: sudo /etc/init.d/apache2 restart * Restarting web server apache2 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs 

谷歌救援:我遵循这个post中的说明http://www.linuxquestions.org/questions/linux-newbie-8/could-not-bind-to-address-0-0-0-0-80-a -405377 /#post3516504

 for i in `ps auwx | grep -i nobody | awk {'print $2'}`; do kill -9 $i; done 

并开始没有错误。 所以,现在我已经修好了,但需要了解更多。

编辑:刚刚看到这个: Apache2摔倒了 – 希望它不是一回事。

编辑:到目前为止,这么好 – rootkit检查变得干净 –

我遇到了三种不同的初始化脚本。

user @ host具有closuresapache2的权限,但是apache在80端口上运行,需要由root启动。 使用sudo重新启动apache2。 用户@根应该可以重新加载apache2。

如果用户@主机可以启动apache2,那么你可能会遇到一个时间问题,在所有的孩子退出之前,apache会尝试启动。 可以使用重新加载来应用许多configuration更改,并且不需要在新服务器启动之前退出旧的subprocess。 请参阅apachectl gracefulapachectl graceful的文档。

当服务器已经运行时,通过运行启动,PID文件被更改为不同的PID。 停止尝试从PID文件停止进程,但不再运行,因为它无法获取旧进程使用的资源。

在问题上

你得到的错误意味着Apache不能使用80端口,因为它被另一个应用程序使用。

现在在你的解决scheme:

 for i in `ps auwx | grep -i nobody | awk {'print $2'}`; do kill -9 $i; done 

Command查看所有正在运行的进程( ps auxw )并查找包含“nobody”( grep -i nobody )的列表项。 -i参数确保filter不区分大小写。

awk {'print $2'}将输出限制在第二列。

最后do kill -9 $i用信号9杀死剩下的进程(KILL)

如果你需要知道什么是在一个端口上运行

 fuser 80/tcp 

这将吐出端口上运行的应用程序的pid(s)