地址已在使用中,但 netstat 或 lsof 中没有
Posted
技术标签:
【中文标题】地址已在使用中,但 netstat 或 lsof 中没有【英文标题】:Address already in use but nothing in netstat or lsof 【发布时间】:2014-07-17 09:49:52 【问题描述】:我尝试在端口 7054 上启动 Python SimpleHTTPServer:
$ sudo python -m SimpleHTTPServer 7054
...
socket.error: [Errno 98] Address already in use
所以,我运行了以下命令:
$ sudo netstat -ntpu | grep 7054
$ sudo lsof -i -n -P | grep 7054
但我没有结果。
【问题讨论】:
看起来像这个,伙计:***.com/questions/19071512/… netstat 和 lsof 命令应该显示使用 7054 端口的所有进程。但没有弹出任何内容。 @daa。为什么 sudo 不起作用? Netstat 不与 sudo 一起工作是高度不确定的,但我尝试(以防万一)直接以 root 身份运行命令)并且(否)结果是相同的。没有进程使用端口 7054,但我仍然遇到“地址已在使用”错误。 我正在调试一个服务器程序,如果我在没有明确关闭服务器套接字的情况下杀死它,我会在大约 30 秒内收到此错误。似乎只需稍等一下就可以解决它。 【参考方案1】:来自netstat
联机帮助页:
netstat [address_family_options] [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--numeric-hosts] [--numeric-ports]
[--numeric-users] [--symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c]
我使用以下选项:
sudo netstat -tanl | grep 7054
这是--numeric
、--tcp
、--all
、--listening
我认为显示侦听特定端口的进程的 pid 所需的最小 netstat
选项是 -nlp
。
您指定的lsof
选项对我有用。使用https://wiki.python.org/moin/UdpCommunication#Receiving和python -m SimpleHTTPServer 7054
的示例代码:
$ netstat -nlp | grep 7054
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:7054 0.0.0.0:* LISTEN 20458/python
udp 0 0 0.0.0.0:7054 0.0.0.0:* 20498/python
$ lsof -i -n -P | grep 7054
python 20458 michael 3u IPv4 143736 0t0 TCP *:7054 (LISTEN)
python 20498 michael 3u IPv4 173739 0t0 UDP *:7054
额外的功劳:用别名粘贴:
listening()
netstat -nlp | grep $1
并使用它:
$ listening 7054
【讨论】:
对不起,但 -tu 用于 TCP 或 UDP,而不是 and :sudo netstat -lnptu | grep 63342 tcp 0 0 127.0.0.1:63342 这个进程没有监听 UDP 而只是 TCP 对。那么问题出在缺少的--listen
选项吗?
你得到解决方案了吗?
Windows 用户:试试netstat -anop tcp | frindstr 7054
。它在最后一列中为您提供 PID,使用tasklist | findstr <pid>
,您可以获取您的 PID 的进程可执行名称,以查看谁在分配端口。以上是关于地址已在使用中,但 netstat 或 lsof 中没有的主要内容,如果未能解决你的问题,请参考以下文章
错误:在将套接字与地址绑定时地址已在使用中,但端口号由“netstat”免费显示
地址已在使用中:JVM_Bind 但未列出使用带有 netstat 的端口的进程