关于网络:如何在Windows上找出正在侦听端口的进程?

How can you find out which process is listening on a port on Windows?

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


鲍尔谢尔

1
Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

CMDZZU1

(Add-n to stop it trying to resolve hostnames,which will make it a lot faster.)

Note Dane's recommendation for TCPView.它看起来非常有用!

-显示所有的连接和倾听港口。

b显示在建立每一个连接或倾听端口中的可执行性。在一些情况下,可以执行的主机多个独立组件,在这些情况下,可以显示在建立连接或倾听端口中的组件的顺序。在本例中,可执行名称在[……]的底部,上面是该组分的名称,因此,在TCP/IP完成之前,该组分被称为该组分。注意,这个选项可以是时间消耗,而且无论如何你都有足够的许可。

-N在数字表格中显示地址和港口号码。

o显示与每一个连接相关的所有权过程ID。


有一个针对Windows的本地GUI:

  • 开始>>所有程序>>附件>>系统工具>>资源监视器

或者运行resmon.exe,或从"任务管理器性能"选项卡

enter image description here


如果你想要这个,请使用TCPView。这是旧的Sysinternals App that Microsoft Bought.


1
netstat -aon | find /i"listening"


大多数答案中提到的-b开关要求您对机器具有管理权限。您不需要提升权限来获取进程名!

找到在端口号中运行的进程的PID(例如8080)

1
netstat -ano | findStr"8080"

通过pid查找进程名

1
tasklist /fi"pid eq 2216"

find process by TCP/IP port


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

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

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


  • Open a command prompt window(as administrator)from"start-search box"enter"cmd"then right-click on"cmd.exe"and select"run as administrator"

  • Enter the following text then hit enter.

    netstat -abno

    -显示所有的连接和倾听港口。

    显示在每一个连接或创建中的可执行的听港在一些情况下,知名的可执行主机多个独立成分,在这些情况下创建连接中的组件序列或倾听港口显示。在此情况下,可执行名称在[…]的底部,上面是该组分的名称,因此,直到TCP/IP完成。注意这个选项能否是时间消耗,能否失败,除非你已经足够允许。

    -N在数字表格中显示地址和港口号码。

    o显示与每一个连接相关的所有权过程ID。

  • 找到你在"本地地址"下听的港口

  • 看着这个过程的名称。

  • 说明:寻找任务经理下面的过程

  • 注释下一步(过程标识符)到港口你正在寻找。

  • 开放窗口任务经理

  • 选择Tab过程。

  • 看着你在第一步的时候没有注意到的位置。

    • 如果你看不到一个柱子,点击视图/选择柱子。选择指针。

    • 选择"从所有用户展示过程"。


  • 获取PID和图像名称

    仅使用一个命令:

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

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

    输出将包含如下内容:

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

    说明:

    • 它遍历以下命令输出的每一行:

      1
      netstat -aon | findstr 9000
    • 从每一行中,提取pid(%a-此处名称不重要)并传递给以下命令(pid是该行中的5个元素)

      1
      tasklist /FI"PID eq 5312"

    如果要跳过标题并返回命令提示,可以使用:

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

    输出:

    1
    java.exe                      5312 Services                   0    130,768 K

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

    类型netstat-n-a-o

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

    现在类型

    任务终止/F/PID 3312

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

    注意:有时Windows不允许直接在cmd上运行此命令,因此首先需要执行以下步骤从Start->Command Prompt(右击Command Prompt,以管理员身份运行)


    在Windows中从PID中获取端口号非常简单。

    步骤如下:

    1)转到"运行"-->键入cmd->按Enter键。

    2)编写以下命令…

    1
    netstat -aon | findstr [port number]

    (注:不包括方括号。)

    3)按Enter键…

    4)然后,cmd将提供该端口上运行的服务的详细信息以及PID。

    5)打开"任务管理器",点击"服务"选项卡,将PID与命令的PID匹配,就这样。


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

    1
    netstat -ao |find /i"listening"

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

    1
    Taskkill /F /IM pidof a process

    只需打开命令shell并键入:(说您的端口是123456)

    1
    netstat -a -n -o | find"123456"

    你将看到你所需要的一切

    标题为:

    1
    2
     Proto  Local Address          Foreign Address        State           PID
     TCP    0.0.0.0:37             0.0.0.0:0              LISTENING       1111

    这是这里提到的


    如果你想用一个Gui工具来做这件事的话If you'd like to use a Gui tool to do this sysinternals tcpview.


    使用Windows 10或Windows Server 2016上的PowerShell 5,运行Get-NetTCPConnectionCmdlet。我想它也应该适用于旧的Windows版本。

    由于某种原因,Get-NetTCPConnection的默认输出不包括进程ID,这有点令人困惑。但是,您总是可以通过格式化输出来获得它。你要找的房产是OwningProcess

    • 如果要查找侦听端口443的进程的ID,请运行以下命令:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List

      LocalAddress   : ::
      LocalPort      : 443
      RemoteAddress  : ::
      RemotePort     : 0
      State          : Listen
      AppliedSetting :
      OwningProcess  : 4572
      CreationTime   : 02.11.2016 21:55:43
      OffloadState   : InHost
    • 将输出格式化为具有所需属性的表:

      1
      2
      3
      4
      5
      6
      PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess

      LocalAddress LocalPort  State OwningProcess
      ------------ ---------  ----- -------------
      ::                 443 Listen          4572
      0.0.0.0            443 Listen          4572
    • 如果要查找进程的名称,请运行以下命令:

      1
      2
      3
      4
      5
      PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess

      Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
      -------  ------    -----      -----     ------     --  -- -----------
      143      15     3448      11024              4572   0 VisualSVNServer


    要找出使用哪个端口的特定进程(PID):

    1
    netstat -anon | findstr 1234

    其中1234是进程的PID。[转到"任务管理器"->"服务/流程"选项卡以查找应用程序的PID]


    netstat -aonetstat -ab告诉你应用程序,但是如果你不是管理员,你会得到"要求的操作需要提升"。

    这并不理想,但是如果您使用SysInternals Process Explorer,您可以转到特定进程的属性并查看TCP选项卡,查看它们是否使用您感兴趣的端口。一针见血的事,但也许能帮上忙……


    输入命令:netstat -aon | findstr :DESIRED_PORT_NUMBER

    例如,如果我想找到端口80:netstat -aon | findstr :80

    这个答案最初发布在这个线程中。


    我推荐Nirsoft的咖喱。

    currports可以过滤显示的结果。tcpview没有此功能。

    注意:您可以右键单击进程的套接字连接并选择"关闭选定的TCP连接"(您也可以在tcpview中这样做)。这通常会在我切换VPN后修复我与Outlook和lync之间的连接问题。使用currports,还可以使用"/close"参数关闭命令行中的连接。


    网通

    • -A显示所有连接和侦听端口
    • -B显示可执行文件
    • -n停止解析主机名(数字形式)
    • -o拥有过程

      Netstat-班诺芬德斯特"7002"

      netstat-ano>ano.txt

    currports工具有助于搜索和筛选


    Netstat-A-O这表明了在一个特定港口上运行过程的转折点。

    保持对过程的思考,并前往任务经理和服务或详细的Tab和结束同样的过程。

    所以你可以在窗口的某个特定端口上杀死一个运行过程。


    Follow these tools:-from CMD:-C:\> netstat -anobwith administrator privilege.

    http://technet.microsoft.com/en-us/sysinternals/bb896653-process explorer

    http://technet.microsoft.com/en-us/sysinternals/bb896645-process dump

    http://technet.microsoft.com/en-us/sysinternals/bb896644-port monitor

    所有来自悉尼的

    如果你只想知道每一个过程中的过程和威胁,我建议学习wmic。真是奇妙的线路工具,给你的比你所知道的更多。

    夸大

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

    每隔五秒钟,上面的命令都会在简报中列出所有过程。为了了解更多,你可以和EDOCX1[…]3>一起去

    1
    2
    3
    c:\>wmic /?
    c:\>wmic process /?
    c:\>wmic prcess list /?

    所以就这样注:


    对于使用PowerShell的用户,请尝试Get-NetworkStatistics

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > Get-NetworkStatistics | where Localport -eq 8000


    ComputerName  : DESKTOP-JL59SC6
    Protocol      : TCP
    LocalAddress  : 0.0.0.0
    LocalPort     : 8000
    RemoteAddress : 0.0.0.0
    RemotePort    : 0
    State         : LISTENING
    ProcessName   : node
    PID           : 11552

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

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

    样本输出

    1
    2
    3
    4
    >   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。

    快速解释Select-String用于过滤相关线路的netstat的长输出。-Pattern根据正则表达式测试每一行。-Context 0,1将为每个模式匹配输出0个前导行和1个尾随行。


    以编程方式,您需要iphlapi.h中的内容,例如gettcptable2()。类似mib_tcp6row2的结构包含所有者PID。


    一个帮助我的单线解决方案就是这个,用你的端口替换3000。

    $P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; kill $P.Id


    对于Windows,如果要查找侦听或连接到端口1234的内容,请在命令提示下执行以下操作:

    1
    netstat -na | find"1234"

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @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

    推荐阅读

      linux修改端口号命令?

      linux修改端口号命令?,代码,服务,系统,端口,工作,邮箱,文件,编辑,命令,后果,

      linux命令查找进程?

      linux命令查找进程?,系统,名称,软件,状态,进程,电脑,信息,命令,材料,数据,怎

      linux命令校验进程?

      linux命令校验进程?,服务,系统,情况,状态,异常,进程,命令,管理,检测,平台,Lin

      linux端口更换命令?

      linux端口更换命令?,代码,服务,网络,端口,系统,管理,基础,文件,编辑,命令,lin

      linux起监听端口命令?

      linux起监听端口命令?,系统,状态,网络,地址,情况,灵活,信息,端口,概念,服务,L

      linux管理端口命令?

      linux管理端口命令?,系统,网络,情况,信息,端口,状态,灵活,管理,地址,对外,LIN

      linux中终止进程命令?

      linux中终止进程命令?,系统,进程,信息,管理,命令,代码,传播,状态,名称,数字,l

      linux进程运行命令?

      linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,lin

      进程管理linux命令?

      进程管理linux命令?,系统,管理,地址,状态,情况,简介,工具,网络,分析,软件,lin

      linux开放的端口命令?

      linux开放的端口命令?,系统,检测,状态,工具,网络,端口,信息,命令,服务,地址,l

      linux网络命令io?

      linux网络命令io?,系统,情况,网络,状态,实时,信息,数据,时间,命令,服务,在lin

      linux重置网络命令?

      linux重置网络命令?,网络,地址,工作,环境,系统,信息,标准,设备,命令,工具,lin

      linux端口映射命令?

      linux端口映射命令?,工具,设备,电脑,系统,服务,网站,不了,名字,通信,环境,在l

      linux命令端口开启?

      linux命令端口开启?,检测,状态,工具,系统,端口,信息,地址,网络,环境,软件,Lin

      linux下看进程命令行?

      linux下看进程命令行?,系统,情况,软件,服务,状态,名称,环境,进程,命令,数据,

      linux高级网络命令?

      linux高级网络命令?,网络,地址,系统,工作,信息,管理,设备,电脑,命令,目录,Lin

      linux中断进程命令?

      linux中断进程命令?,系统,管理,软件,进程,命令,传播,暂停,结束,信号,程序,在L

      linux进程与磁盘命令?

      linux进程与磁盘命令?,管理,系统,信息,情况,基础,增长,单位,地址,发行,命令,L

      linux点亮端口命令?

      linux点亮端口命令?,状态,系统,服务,端口,检测,地址,命令,指令,主机,下面,lin

      linux网络参数命令?

      linux网络参数命令?,网络,地址,系统,工作,信息,工具,情况,服务,状态,命令,Lin