使用下面的批处理脚本,它将进程名称作为参数,并为进程提供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
netstat -ao 和 netstat -ab 告诉你应用程序,但如果你不是管理员,你会得到“请求的操作需要提升”。
netstat -ao
netstat -ab
这不是理想的,但如果您使用sysinternals Process Explorer,您可以转到特定进程的属性并查看TCP选项卡,看看他们是否正在使用您感兴趣的端口。有点针和干草堆的东西,但也许它会帮助某人......
netstat -a -o 这显示了在特定端口上运行的进程的PID。
请记住进程ID并转到任务管理器和服务或详细信息选项卡,然后结束具有相同PID的进程。
因此,您可以终止在Windows中的特定端口上运行的进程。
如果您想使用GUI工具来执行此操作 SysInternals TCPView 。
以编程方式,您需要来自的东西 iphlpapi.h , 例如 GetTcpTable2 ()。结构如 MIB_TCP6ROW2 包含所有者PID。
对于那些使用Powershell的人,试试吧 Get-NetworkStatistics :
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
的 使用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。
的 快速解释 强> Select-String 用于过滤冗长的输出 netstat 对于相关的线路。 -Pattern 根据正则表达式测试每一行。 -Context 0,1 将为每个模式匹配输出0个前导行和1个尾随行。
Select-String
netstat
-Pattern
-Context 0,1
netstat -aon | find /i "listening"
用netstat -a显示所有连接和侦听端口 -b显示可执行文件 -n stop解析主机名(数字形式) - 拥有过程
netstat -bano | findstr "7002" netstat -ano > ano.txt
Currports 有助于搜索和过滤
如果运行以下命令,则可以获取更多信息:
netstat -aon |find /i "listening" |find "port"
使用“查找”命令可以过滤结果。 find / i“listening”将只显示“Listening”的端口。注意,您需要/ i忽略Case,否则您将键入find“LISTENING”。 | find“port”将结果限制为仅包含特定端口号的结果。注意,在此基础上它还将过滤在响应字符串中的任何位置具有端口号的结果。
对于Windows,如果要查找侦听或连接到端口1234的内容,请在cmd提示符处执行以下命令:
netstat -na | find "1234"
请遵循以下工具: - 来自 的 CMD 强> : - C:\> netstat -anob 同 的 管理员 强> 特权。
C:\> netstat -anob
http://technet.microsoft.com/en-us/sysinternals/bb896653 - Process Explorer
http://technet.microsoft.com/en-us/sysinternals/bb896645 - 处理转储
http://technet.microsoft.com/en-us/sysinternals/bb896644 - 端口监视器
全部来自sysinternals.com
如果您只是想知道每个进程下的进程运行和线程,我建议您了解一下 wmic 。精彩的cmd线工具,为您提供比您所知更多的东西。
wmic
例如: -
c:\> wmic process list brief /every:5
上面的命令将每5秒简要显示所有进程列表。要了解更多信息,您可以选择 /? Windows的命令,例如,
/?
c:\>wmic /? c:\>wmic process /? c:\>wmic prcess list /?
等等等等。 :)
帮助我的单线解决方案是这个,只需用你的端口替换3000
$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; kill $P.Id
要获取与每个连接关联的所有拥有进程ID的列表:
netstat -ao |find /i "listening"
如果要杀死任何进程都有id并使用此命令,那么端口就变得空闲了
Taskkill /F /IM pidof a process
输入命令: netstat -aon | findstr :DESIRED_PORT_NUMBER
netstat -aon | findstr :DESIRED_PORT_NUMBER
例如,如果我想找到端口80: netstat -aon | findstr :80
netstat -aon | findstr :80
这个答案最初发布于 这个帖子 。
Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess
C:\> netstat -a -b
(加 的 -n 强> 阻止它试图解析主机名,这将使它快得多)
注意丹麦人的建议 套装软件 。看起来很有用!
的 -一个 强> 显示所有连接和侦听端口。
的 -b 强> 显示创建每个连接所涉及的可执行文件 听口。在某些情况下,众所周知的可执行文件主机 多个独立的组件,在这些情况下 创建连接所涉及的组件序列 或显示监听端口。在这种情况下可执行文件 name位于底部的[]中,顶部是它调用的组件, 等等,直到达到TCP / IP。请注意,此选项 可能很费时,除非你有足够的,否则会失败 权限。
的 -n 强> 以数字形式显示地址和端口号。
的 -o 强> 显示与每个连接关联的拥有进程ID。
使用 套装软件 如果你想要一个GUI。这是微软收购的旧版Sysinternals应用程序。
要找出哪个特定进程(PID)正在使用哪个端口:
netstat -anon | findstr 1234
其中1234是您的过程的PID。 [转到任务管理器 - >服务/流程选项卡,以找出您的应用程序的PID]