是什么导致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
答案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
,可能是有人让它重生。