如何确定哪个进程正在侦听Windows上的TCP或UDP端口?


当前回答

对于Windows:

netstat -aon | find /i "listening"

其他回答

Windows有一个本机GUI:

“开始”菜单→ 所有程序→ 配件→ 系统工具→ 资源监视器或运行resmon.exe,或来自TaskManager→ 性能选项卡。

如果您想使用GUI工具来实现这一点,可以使用Sysinternals的TCPView。

如果需要GUI,请使用TCPView。这是微软收购的旧Sysinternals应用程序。

查找使用端口8000的pid

netstat -aon | findstr '8000'

在窗口中终止该进程

taskkill /pid pid /f

其中pid是从first命令中获取的进程id

获取PID和图像名称

仅使用一个命令:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

其中9000应替换为您的端口号。

输出将包含如下内容:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

说明:

它遍历以下命令输出的每一行:netstat-aon | findstr 9000从每一行中,提取PID(%a-名称在此不重要)(PID是该行中的第5个元素)并传递给以下命令任务列表/FI“PID eq 5312”


如果要跳过标头和命令提示符的返回,可以使用:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

输出:

java.exe                      5312 Services                   0    130,768 K