Apache-2.2
在 RHEL 中重新啟動 httpd 服務會返回“正在停止 httpd:F我_樂_DF一種一世大號和DFAILED“ - 我該如何解決?
這是我第一次指出一個問題:
$ 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
腳本或啟動 httpdservice
?)。您可以使用ps -ef |grep http
.嗯,只是
sudo kill 20181
。然後像往常一樣啟動服務。然後嘗試在那之後重新啟動。如果它再次發生,您可能應該調查為什麼 pid 文件與程序表不匹配。