地址已在使用中,但 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”免费显示

Linux网络工具lsof和netstat

地址已在使用中:JVM_Bind 但未列出使用带有 netstat 的端口的进程

Linux查询端口是否被占用的四种方法

查看linux中某个端口(port)是否被占用(netstat,lsof)

mac中lsof的使用