你怎么能找出哪个进程正在侦听Windows上的一个端口?
你怎么能找出哪个进程正在侦听Windows上的一个端口?
C:\> netstat -a -b
(添加-n停止它试图parsing主机名,这将使它快很多)
注意Dane对TCPView的build议。 看起来非常有用!
-a显示所有连接和侦听端口。
-b显示创build每个连接或侦听端口所涉及的可执行文件。 在某些情况下,众所周知的可执行文件会托pipe多个独立的组件,在这种情况下,会显示创build连接或侦听端口所涉及的组件顺序。 在这种情况下,可执行文件的名称在底部是[],最上面是它所调用的组件,直到到达TCP / IP为止。 请注意,此选项可能会耗费时间,并会失败,除非您拥有足够的权限。
-n以数字forms显示地址和端口号。
-o显示与每个连接关联的拥有进程ID。
Windows有一个本地GUI:
- 开始>>所有程序>>附件>>系统工具>>资源监视器
或运行 resmon.exe
,或从TaskManager性能选项卡
如果你想要一个GUI来使用TCPView 。 这是微软收购的旧Sysinternals应用程序。
netstat -aon | find /i "listening"
-
打开命令提示符窗口(以pipe理员身份)从“开始\search框”input“cmd”,然后右键单击“cmd.exe”并select“以pipe理员身份运行”
-
input以下文本,然后按Enter键。
netstat -abno
-a显示所有连接和侦听端口。
-b显示创build每个连接或侦听端口所涉及的可执行文件。 在某些情况下,众所周知的可执行文件会托pipe多个独立的组件,在这种情况下,会显示创build连接或侦听端口所涉及的组件顺序。 在这种情况下,可执行文件的名称在底部是[],最上面是它所调用的组件,直到到达TCP / IP为止。 请注意,此选项可能会耗费时间,并会失败,除非您拥有足够的权限。
-n以数字forms显示地址和端口号。
-o显示与每个连接关联的拥有进程ID。
-
在“本地地址”下find正在监听的端口
-
看看下面的进程名称。
注:要查找任务pipe理器下的进程
-
注意您正在查看的端口旁边的PID(进程标识符)。
-
打开Windows任务pipe理器。
-
select进程选项卡。
-
查找在步骤1中执行netstat时记下的PID。
-
如果您没有看到PID列,请点击查看/select列。 selectPID。
-
确保选中“显示来自所有用户的进程”。
-
如果您运行以下命令,您可以获得更多信息:
netstat -aon |find /i "listening" |find "port"
使用“查找”命令可以过滤结果。 找/我“聆听”将只显示“听”的端口。 请注意,您需要/我忽略大小写,否则您会inputfind“LISTENING”。 |查找“端口”将结果限制为仅包含特定端口号的结果。 请注意,在这个过程中,它也会过滤在响应string中任何地方都有端口号的结果。
获取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
个元素),并传递给下面的命令tasklist /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
首先我们find我们需要消除的特定任务的进程ID,以便获得端口空闲
types
netstat -n -a -o
在Windows命令行提示符(cmd)执行这个命令后,select我认为最后一列假设这是3312的PID
现在input
taskkill / F / PID 3312
您现在可以通过键入netstat命令进行交叉检查。
注意:有时窗口不允许你直接在CMD上运行这个命令,所以首先你需要从开始 – >命令提示符(右键单击命令提示符,并以pipe理员身份运行)
在Windows中从pid获取端口号非常简单。
以下是步骤:
1)转到运行 – >inputcmd – >按回车。
2)写下面的命令…
netstat -aon | findstr [port number]
(注意:不要包括方括号。)
3)按回车…
4)然后cmd会给你在该端口上运行的服务与pid的细节。
5)打开任务pipe理器,然后点击服务标签,匹配与cmd的pid,就是这样。
要获取与每个连接关联的所有拥有进程ID的列表,请执行以下操作:
netstat -ao |find /i "listening"
如果想杀掉任何有id的进程并使用这个命令,那么这个port就变成了free
Taskkill /F /IM pidof a process
如果你想使用一个GUI工具来做到这一点SysInternals TCPView 。
netstat -ao
和netstat -ab
告诉你应用程序,但是如果你不是pipe理员,你会得到“请求的操作需要提升”。
这是不理想的,但是如果你使用sysinternals进程资源pipe理器,你可以去特定进程的属性,并看看TCP标签,看看他们是否使用你感兴趣的端口。一针和干草堆的东西,但也许它会帮助别人….
只要打开一个命令shell并键入:(说你的端口是123456)
netstat -a -n -o | find "123456"
你会看到你需要的一切
标题是:
Proto Local Address Foreign Address State PID TCP 0.0.0.0:37 0.0.0.0:0 LISTENING 1111
这正如这里所提到的
键入命令: netstat -aon | findstr :DESIRED_PORT_NUMBER
netstat -aon | findstr :DESIRED_PORT_NUMBER
例如,如果我想find端口80: netstat -aon | findstr :80
netstat -aon | findstr :80
这个答案最初是在这个post中发布的。
netstat -a -o显示在特定端口上运行的进程的PID。
记住进程ID并转到任务pipe理器和服务或详细信息选项卡,并结束具有相同PID的进程。
因此,你可以杀死一个在Windows的特定端口上运行的进程。
我推荐NirSoft的CurrPorts 。
CurrPorts可以过滤显示的结果。 TCPView没有这个function。
注意:您可以右键单击进程的套接字连接并select“closures选定的TCP连接”(您也可以在TCPView中执行此操作)。 这通常可以解决我在切换VPN后与Outlook和Lync的连接问题。 使用CurrPorts,您也可以使用“/ close”参数从命令行closures连接。
遵循以下工具: – 从cmd : – C:\> netstat -anob
具有pipe理员权限的C:\> netstat -anob
。
http://technet.microsoft.com/en-us/sysinternals/bb896653 – 进程资源pipe理器
http://technet.microsoft.com/en-us/sysinternals/bb896645 – 进程转储
http://technet.microsoft.com/en-us/sysinternals/bb896644 – 端口监视器
全部来自sysinternals.com
如果你只是想知道每个进程下的进程运行和线程,我build议学习wmic
。 奇妙的CMD线工具,它给你比你所知道的更多。
例子: –
c:\> wmic process list brief /every:5
以上命令将每5秒钟显示所有进程列表。 要知道更多,你可以去与/?
命令的窗口,例如,
c:\>wmic /? c:\>wmic process /? c:\>wmic prcess list /?
等等等等。 🙂
使用Windows 10或Windows Server 2016上的PowerShell 5,运行Get-NetTCPConnection
cmdlet。 我想这应该也适用于较旧的Windows版本。
Get-NetTCPConnection
的默认输出由于某种原因不包括进程ID,这有点令人困惑。 但是,您可以通过格式化输出来获取它。 您正在寻找的财产是OwningProcess
。
-
如果要查找在端口443上侦听的进程的ID,请运行以下命令:
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
-
使用您要查找的属性将输出格式化为表格:
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
-
如果您想查找进程的名称,请运行以下命令:
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
对于那些使用Powershell,请尝试Get-NetworkStatistics
:
> 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
对于Windows,如果要查找正在侦听或连接到端口1234的东西,请在cmd提示符下执行以下命令:
netstat -na | find "1234"