对于此类问题非常新,我正在尝试在端口 80 上启动服务器(使用这个特定端口对我来说很重要)。
它失败了,但它可以在其他端口上工作(甚至< 1024 when i am root, but still fail on the port 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)!
如果这是 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
...
我会列出有趣的部分:
您基本上想要确保上面提到的程序没有运行(例如,就我而言,我必须关闭 apache2 守护进程,并将操作系统配置为在下次启动时不自动启动它)。
另一方面,如果您只是想快速解决此问题,则可以终止该进程:
kill -9 <pid>
在我的例子中:
kill -9 26156
问题当然会在您下次重新启动或有人启动该服务时再次出现。
您可以使用
lsof
来查找:
sudo lsof -i :80
如果您没有
lsof
,请使用 安装
sudo apt-get install lsof
lsof
就像瑞士军刀工具,可以告诉谁正在打开文件和套接字。
如果端口 80 上的 netstat 或通过 lsof -i :80 没有显示任何内容,则尝试在 sudo 中运行服务器,然后应该显示在端口 80 上侦听的内容。对我有用。