在这类问题上非常新,我试图在端口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)!
答案 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
...
我将列出有趣的部分:
你基本上想要确保上面提到的程序没有运行(例如,在我的情况下,我必须关闭apache2守护程序,并将操作系统配置为在下次启动时不自动启动它)。
另一方面,如果您只想快速修复此问题,则可以终止该过程:
kill -9 <pid>
在我的例子中:
kill -9 26156
问题当然会在您下次重启时返回,或者有人启动该服务。
答案 1 :(得分:2)
您可以使用lsof
查找:
sudo lsof -i :80
如果您没有lsof
,请使用
sudo apt-get install lsof
lsof
就像瑞士军刀工具一样,可以判断谁正在打开文件和插座。