有没有办法从 Windows 命令行检查特定端口的状态?我知道我可以使用 netstat 检查所有端口,但 netstat 很慢,而且查看特定端口可能不是。
14 回答
这是端口查找的简单解决方案...
在命令中:
netstat -na | find "8080"
在 bash 中:
netstat -na | grep "8080"
在 PowerShell 中:
netstat -na | Select-String "8080"
您可以将netstat
组合与-np
标志和管道一起使用find
或findstr
命令。
基本用法是这样的:
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 上的连接。
我用:
netstat –aon | find "<port number>"
这里 o 代表进程 ID。现在您可以对进程 ID 进行任何操作。要终止进程,例如,使用:
taskkill /F /pid <process ID>
当我遇到 WAMP apache 问题时,我使用此代码查找正在使用端口 80 的程序。
netstat -o -n -a | findstr 0.0:80
3068
是PID,所以我可以从任务管理器中找到它并停止该进程。
如其他地方所述:使用带有适当开关的 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 /?
netstat -a -n | find /c "10.240.199.9:8080"
它将为您提供特定 IP 和端口上活动的套接字数量(服务器端口号)
对于 Windows 8 用户:打开命令提示符,键入netstat -an | 找到“你的端口号”,输入。
如果回复类似于LISTENING,则该端口正在使用中,否则它是免费的。
为了改进@EndUzr 的回复:
要查找外部端口(IPv4 或 IPv6),您可以使用:
netstat -an | findstr /r /c:":N [^:]*$"
要查找本地端口(IPv4 或 IPv6),您可以使用:
netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "
其中 N 是您感兴趣的端口号。“/r”开关告诉它将其作为正则表达式处理。"/c" 开关允许 findstr 在搜索字符串中包含空格,而不是将空格视为搜索字符串分隔符。这个增加的空间可以防止更长的端口被滥用 - 例如,“:80”与“: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 *[^ ]*:[^ ]*"
这将帮助你
netstat -atn | grep <port no> # For tcp
netstat -aun | grep <port no> # For udp
netstat -atun | grep <port no> # For both
它将为您提供特定 IP 上的所有活动套接字:
netstat -an | find "172.20.1.166"
对于 80 端口,命令为:netstat -an | find "80" 对于端口 n,命令是:netstat -an | 找到“n”
这里,netstat 是你机器的指令
-a :显示所有连接和监听端口 -n :以数字格式显示所有地址和指令(这是必需的,因为 -a 的输出可以包含机器名称)
然后,查找命令以“模式匹配”前一个命令的输出。
在 RHEL 7 中,我使用此命令过滤处于 LISTEN 状态的多个端口:
sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'
此命令将显示所有端口及其目标地址:
netstat -f
使用 lsof 命令“lsof -i tcp:port #”,这里是一个例子。
$ lsof -i tcp:1555
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 27330 john 121u IPv4 36028819 0t0 TCP 10.10.10.1:58615->10.10.10.10:livelan (ESTABLISHED)
java 27330 john 201u IPv4 36018833 0t0 TCP 10.10.10.1:58586->10.10.10.10:livelan (ESTABLISHED)
java 27330 john 264u IPv4 36020018 0t0 TCP 10.10.10.1:58598->10.10.10.10:livelan (ESTABLISHED)
java 27330 john 312u IPv4 36058194 0t0 TCP 10.10.10.1:58826->10.10.10.10:livelan (ESTABLISHED)