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


当前回答

使用以下工具:从cmd:C:\>netstat-anob,具有管理员权限。

进程管理

过程转储

端口监视器

全部来自sysinternals.com。

如果您只想了解每个进程下的进程运行和线程,我建议您学习wmic。这是一个很棒的命令行工具,它为您提供了比您所能知道的更多的信息。

例子:

c:\> wmic process list brief /every:5

上述命令将每5秒简要显示一个所有进程列表。要了解更多信息,您可以与/?例如,

c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?

依此类推。:)

其他回答

根据带有信息和击杀的答案,对我来说,将它们组合在一个命令中是有用的。您可以从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→ 性能选项卡。

使用以下批处理脚本,该脚本将进程名称作为参数,并为进程提供netstat输出。

@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End

:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------

netstat -ano |findstr %z%
goto :eof

:End

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

类型

netstat -n -a -o

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

现在键入

taskkill /F /PID 3312

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

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

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

正在使用PowerShell。。。…这将是您的朋友(用端口号替换8080):

 netstat -abno | Select-String -Context 0,1 -Pattern 8080

样本输出

>   TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING         2920
   [tnslsnr.exe]
>   TCP    [::]:8080              [::]:0                 LISTENING         2920
   [tnslsnr.exe]

因此,在此示例中,tnslsnr.exe(OracleXE数据库)正在侦听端口8080。

快速解释

选择字符串用于过滤相关行的netstat的冗长输出。-模式根据正则表达式测试每行。-上下文0,1将为每个模式匹配输出0个前导行和1个尾随行。