6

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

它失败了,但它适用于其他端口(当我是 root 时,即使 < 1024,但仍然在端口 80 上失败)。

我可能在端口 80 上运行了一些东西,我想识别它以更改其侦听端口。

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

这是我得到的:

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)!

4

2 回答 2

11

如果这是 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

下次重新启动或有人启动该服务时,问题当然会再次出现。

于 2013-01-05T03:59:11.610 回答
3

您可以通过lsof以下方式了解:

sudo lsof -i :80

如果没有lsof,请安装它

sudo apt-get install lsof

lsof就像瑞士军刀工具,可以告诉谁持有文件和套接字打开。

于 2013-01-05T03:52:39.807 回答