Apache服务器停止服务后自动启动

Apache服务器停止服务后自动启动

是什么导致httpd停止后自动启动?

在 bash 脚本中,我需要首先停止 apache Web 服务器。这是脚本:

apachectl stop;
while pgrep httpd; do sleep 1; done
echo "[Apache server stopped]"

当我运行脚本时,它会打印正在运行的 apache 进程,直到没有任何正在运行的进程并打印[Apache 服务器已停止]

然后运行该命令pgrep httpd不会打印任何内容,但如果我输入服务器托管的网站,则会pgrep httpd打印一些 httpd 进程。

这是停止 apache 的正确方法吗?为什么运行后会自动启动apachectl stop?如果它与保持活动时间,如何强制停止正在运行的子进程?

编辑:这对于在命令行中运行service httpd stop或命令也是如此。apachectl stop

答案1

upstart,服务管理器,如果设置为,可以重新启动httpdrespawn

apachectl stop停止进程而不通知upstart

尝试:

service httpd stop

顺便说一句,当您stop向 apache 发出任何类似命令时,它将停止接受新连接。它gracefuls还将允许它完成任何当前打开的连接。

答案2

确认服务

在 CentOS 6 上,我会调查该httpd服务是否可访问。

$ service --status-all |& grep httpd
httpd is stopped

您可以使用以下方法禁用此服务chkconfig

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

$ sudo chkconfig httpd off

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

但当我访问它时它一直启动?

由于您使用的是 CentOS 6,因此您可能会使用 Upstart。您可以查看httpd该服务是否在其控制之下。

$ initctl list

您将在列表中看到它,我没有要显示的配置。根据您对问题的描述,我认为您的系统设置httpd如下:

httpd stop/waiting

据我了解,这意味着如果 Upstart 看到该服务被访问,它将重新启动它。httpd如果/etc/init是这种情况,Upstart 将维护一个服务脚本。您需要进入该文件并禁用该服务并重新加载配置。它可能有一个respawn部分导致了这种情况:

例子

$ more /etc/init/prefdm.conf 
# prefdm - preferred display manager
#
# Starts gdm/xdm/etc by preference

start on stopped rc RUNLEVEL=5

stop on starting rc RUNLEVEL=[!5]

console output
respawn
respawn limit 10 120
exec /etc/X11/prefdm -nodaemon

参考

答案3

在 中寻找它/etc/inittab,可能是有人让它重生。

相关内容