无法使用我的服务器侦听端口80

时间:2013-01-05 03:45:41

标签: unix ubuntu port

在这类问题上非常新,我试图在端口80上启动服务器(对我来说使用这个特定的端口很重要)。

它失败了,但是它可以在其他端口上运行(当我是root用户时,甚至< 1024,但在端口80上仍然失败)。

我可能在端口80上运行了一些东西,我想识别它以便改变它的监听端口。

我看到这个cmd可以帮助查看特定端口的状态:netstat -ano|grep 80|grep LISTEN但我不确定tu是否理解结果。

这是我得到的:

tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::80                   :::*                    LISTEN      off (0.00/0/0)
unix  2      [ ACC ]     STREAM     LISTENING     8805     /tmp/mongodb-27017.sock
unix  2      [ ACC ]     STREAM     LISTENING     13112    /home/me/.pulse/04d802bb34ddb9da49b1f9060000000b-runtime/native

我在第2行读到端口80似乎没有收听,但是还不明白。

更新:

sudo lsof -i :80

COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1107     root    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1131 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1132 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1133 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1134 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1136 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
ubuntu-ge 2095     me    7u  IPv4  82145      0t0  TCP me-Ubuntu.local:43345->mulberry.canonical.com:http (CLOSE_WAIT)

谢谢(我使用的是ubuntu)!

2 个答案:

答案 0 :(得分:6)

如果这是Linux(也可能是其他一些UNIX,但不是MacOS),请尝试运行以下命令:

sudo netstat -lnp

您将获得类似于以下内容的输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
...
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     26156/apache2       
...

我将列出有趣的部分:

  • 本地地址: 0.0.0.0:80 - 所讨论的地址是所有接口上的端口80.
  • 状态: LISTEN - 正在倾听
  • PID /程序名称 - 26156 / apache2 - 正在侦听端口的进程的ID和名称。

你基本上想要确保上面提到的程序没有运行(例如,在我的情况下,我必须关闭apache2守护程序,并将操作系统配置为在下次启动时不自动启动它)。

另一方面,如果您只想快速修复此问题,则可以终止该过程:

kill -9 <pid>

在我的例子中:

kill -9 26156

问题当然会在您下次重启时返回,或者有人启动该服务。

答案 1 :(得分:2)

您可以使用lsof查找:

sudo lsof -i :80

如果您没有lsof,请使用

进行安装
sudo apt-get install lsof

lsof就像瑞士军刀工具一样,可以判断谁正在打开文件和插座。