在 RHEL 中重新启动 httpd 服务返回“正在停止 httpd:[失败]” - 我该如何解决这个问题?

ghb*_*att 6 httpd rhel5 httpd.conf service apache-2.2

这是我对问题的第一个迹象:

$ sudo /sbin/service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]     
Run Code Online (Sandbox Code Playgroud)


我知道 httpd 正在运行

$ ps -ef | grep httpd | grep -v grep
apache    9619 20181  0 07:08 ?        00:00:03 /usr/sbin/httpd
apache   10092 20181  0 Jan24 ?        00:00:07 /usr/sbin/httpd
apache   13086 20181  0 06:09 ?        00:00:00 /usr/sbin/httpd
apache   13717 20181  0 Jan25 ?        00:00:01 /usr/sbin/httpd
apache   14730 20181  0 07:13 ?        00:00:01 /usr/sbin/httpd
apache   16359 20181  0 09:54 ?        00:00:00 /usr/sbin/httpd
root     20181     1  0  2011 ?        00:00:01 /usr/sbin/httpd
apache   21450 20181  0 09:55 ?        00:00:00 /usr/sbin/httpd
Run Code Online (Sandbox Code Playgroud)


它使用端口 80 和 443

$ sudo netstat -lnp | grep :80
tcp        0      0 :::80                       :::*                        LISTEN      9619/httpd
$ sudo netstat -lnp | grep :443
tcp        0      0 :::443                      :::*                        LISTEN      9619/httpd 
Run Code Online (Sandbox Code Playgroud)


所以我假设我收到消息“没有可用的侦听套接字”,因为 httpd 无法停止释放端口 80 和 443。


我正在使用 RHEL 5.7 版:

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.7 (Tikanga)
Run Code Online (Sandbox Code Playgroud)


我可以看到一堆为 httpd 运行的进程:

$ pgrep httpd
9619
10092
13086
13717
14730
16359
20181
21450
Run Code Online (Sandbox Code Playgroud)


什么可以阻止 httpd 停止?如果我终止了 httpd 的进程,我是否能够毫无问题地启动 httpd?

cjc*_*cjc 5

/etc/init.d/httpd 中的 stop 函数使用 pidfile:

killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
Run Code Online (Sandbox Code Playgroud)

可能是 pidfile/var/run/httpd.pid已过时或丢失(您过去是否可以在不使用/etc/init.d脚本的情况下启动 httpd或service?)。您可以使用ps -ef |grep http.

嗯,只是sudo kill 20181。然后像往常一样启动服务。之后尝试重新启动。

如果它再次发生,您可能应该调查为什么 pid 文件与进程表不一致。