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


当前回答

根据带有信息和击杀的答案,对我来说,将它们组合在一个命令中是有用的。您可以从cmd运行此命令以获取有关侦听给定端口的进程的信息(示例8080):

for /f "tokens=3 delims=LISTENING" %i  in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @tasklist /nh /fi "pid eq %i"

或者如果你想杀死它:

for /f "tokens=3 delims=LISTENING" %i  in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @Taskkill /F /IM %i

您也可以将这些命令放入bat文件中(它们略有不同-将%i替换为%%i):

文件portInfo.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @tasklist /nh /fi "pid eq %%i"

文件端口Kill.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @Taskkill /F /IM %%i

然后您可以通过cmd执行以下操作:

端口信息.bat 8080

or

端口Kill.bat 8080

其他回答

Windows有一个本机GUI:

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

要获取与每个连接关联的所有所属进程ID的列表,请执行以下操作:

netstat -ao |find /i "listening"

如果要终止任何进程,请具有ID并使用此命令,以便端口变为空闲

Taskkill /F /IM PID of a process

netstat-ao和netstat-ab告诉您应用程序,但如果您不是系统管理员,则会得到“请求的操作需要提升”。

这并不理想,但如果您使用Sysinternals的Process Explorer,您可以转到特定进程的财产,查看TCP选项卡,看看它们是否正在使用您感兴趣的端口。这有点像大海捞针,但可能会对某人有所帮助。。。

如果运行以下命令,可以获得更多信息:

netstat -aon | find /i "listening" |find "port"

使用“查找”命令可以过滤结果。find/i“侦听”将仅显示“侦听”的端口。注意,您需要/i忽略大小写,否则您将键入find“LISTENING”。|查找“端口”将结果限制为仅包含特定端口号的端口。注意,在这一点上,它还将过滤响应字符串中任何位置具有端口号的结果。

首先,我们找到需要消除的特定任务的进程id,以便获得自由端口:

类型

netstat -n -a -o

在Windows命令行提示符(cmd)中执行此命令后,选择我认为是最后一列的pid。假设这是3312。

现在键入

taskkill /F /PID 3312

现在可以通过键入netstat命令进行交叉检查。

注意:有时Windows不允许您直接在CMD上运行此命令,因此首先需要执行以下步骤:

从开始菜单->命令提示符(右键单击命令提示符,然后以管理员身份运行)