查看特定端口的命令行

355
有没有一种方法可以从Windows命令行检查特定端口的状态?我知道可以使用netstat检查所有端口,但是netstat很慢,而且查看特定端口可能并不方便。

7
只有当你不使用-n开关时,netstat才会变慢,因为它需要进行大量的DNS查找。 - user207421
18个回答

442

这里是找到端口的简单解决方案...

在命令提示符中:

netstat -na | find "8080"
在Bash中:
netstat -na | grep "8080"

在PowerShell中:

netstat -na | Select-String "8080"

3
如何使用此命令?我想知道这个端口号是否有效。链接:link - Mayur Ingle
22
值得一提的是 -o 标志(即此处的 -nao)可用于包括使用端口的进程 PID。 - Steve Chambers
如果您有任何其他使用“8080”端口的端口,则它也将被占用。例如,98080或78080等。 - Shtefan
正如其他答案所指出的,在你关注的端口号前加冒号可以降低(但不一定消除)获取错误结果的可能性。因此,搜索“:8080”比搜索“8080”更好。 - skomisa

114
您可以使用带有-np标志的netstat,并将其与findfindstr命令进行管道连接。
基本用法如下:
netstat -np <protocol> | find "port #"

比如说,为了检查TCP上的80端口,你可以这样做:netstat -np TCP | find "80",这将输出以下类似的内容:

TCP    192.168.0.105:50466    64.34.119.101:80       ESTABLISHED
TCP    192.168.0.105:50496    64.34.119.101:80       ESTABLISHED

正如您所看到的,这仅显示TCP协议上端口80的连接。


89

我使用:

netstat –aon | find "<port number>"

这里的o代表进程ID。 现在你可以对该进程ID执行任何操作。 例如,要终止该进程,请使用:

taskkill /F /pid <process ID>

76

当我遇到WAMP Apache的问题时,我使用这段代码来查找哪个程序正在使用端口80。

netstat -o -n -a | findstr 0.0:80

在此输入图片描述

3068 是进程 ID,所以我可以从任务管理器中找到它并停止该进程。


非常好,非常感谢!特别是对于 TCP,我使用以下命令: netstat -o -nap TCP | findstr 0.0:80 - denyoha

23

如其他地方所述:使用带有适当开关的netstat,然后使用find[str]过滤结果。

最基本的:

netstat -an | find ":N"
或者
netstat -a -n | find ":N"

要找到一个外国港口,你可以使用以下方法:

netstat -an | findstr ":N[^:]*$"

要查找本地端口,您可以使用:

netstat -an | findstr ":N.*:[^:]*$"

N代表您感兴趣的端口号。

-n确保所有端口都是数字形式,即不以服务名称返回。

-a将确保您搜索所有连接(TCP,UDP,侦听...)

find字符串中,您必须包括冒号作为端口限定符,否则该数字可能与本地或远程地址匹配。

您可以使用其他netstat开关进一步缩小搜索范围,视需要而定...

更多阅读 (^0^)

netstat /?

find /?

findstr /?

12
netstat -a -n | find /c "10.240.199.9:8080"

它将提供给您特定 IP 和端口(服务器端口号)上活动套接字的数量。


3
这在 Windows 2012 R2 上无法在 Windows PowerShell 中运行,收到的结果为 FIND: Parameter format not correct - Chaminda Bandara

8

它将为您提供特定IP上的所有活动套接字:

netstat -an | find "172.20.1.166"

7
为了改进@EndUzr的回答,您可以使用以下方法来查找一个外部端口(IPv4或IPv6):
netstat -an | findstr /r /c:":N [^:]*$"

要查找本地端口(IPv4或IPv6),您可以使用以下命令:

netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "

其中 N 是您感兴趣的端口号。 "/r" 开关告诉它将其处理为正则表达式。 "/c" 开关允许 findstr 在搜索字符串中包含空格,而不是将空格视为搜索字符串分隔符。这个额外的空格可以防止较长的端口被错误处理-例如,":80" vs ":8080" 和其他端口混淆问题。

例如,要列出到本地 RDP 服务器的远程连接:

netstat -an | findstr /r /c:":3389 *[^ ]*:[^ ]*"

或者查看谁正在访问您的DNS:

netstat -an | findstr /r /c:":53 *[^ ]*:[^ ]*"

如果要排除仅限本地端口,可以使用一系列带有“/v”和反斜杠的异常:

netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"

6

对于Windows 8用户:打开命令提示符,输入netstat -an | find "你的端口号",然后按回车键。

如果回复是LISTENING,则该端口正在使用中;否则,该端口可用。


5

这将对您有所帮助

netstat -atn | grep <port no>          # For tcp
netstat -aun | grep <port no>           # For udp
netstat -atun | grep <port no>          # For both

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接