Apache-2.2

在 RHEL 中重新啟動 httpd 服務會返回“正在停止 httpd:F我_樂_DF一種一世大號和DFAILED“ - 我該如何解決?

  • January 19, 2016

這是我第一次指出一個問題:

$ sudo /sbin/service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: no listening sockets available, shutting down
Unable to open logs
                                                          [FAILED]     

我知道 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

它正在使用埠 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 

所以我假設我收到消息“沒有可用的偵聽套接字”,因為 httpd 無法停止釋放埠 80 和 443。

我正在使用 RHEL 5.7 版:

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.7 (Tikanga)

我可以看到一堆為 httpd 執行的程序:

$ pgrep httpd
9619
10092
13086
13717
14730
16359
20181
21450

什麼可以阻止 httpd 停止?如果我終止 httpd 的程序,我是否能夠毫無問題地啟動 httpd?

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

killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd

可能,pidfile/var/run/httpd.pid已過期或失去(您是否可以在過去不使用/etc/init.d腳本或啟動 httpd service?)。您可以使用ps -ef |grep http.

嗯,只是sudo kill 20181。然後像往常一樣啟動服務。然後嘗試在那之後重新啟動。

如果它再次發生,您可能應該調查為什麼 pid 文件與程序表不匹配。

引用自:https://serverfault.com/questions/353951