4. Windows 下使用 Resource Monitor:资源监视器实战
聊完了命令行那套,咱们来看看图形化工具。说实话,我平时排查端口问题,Resource Monitor(资源监视器) 用得比 netstat 还多。为什么?因为它直观,而且能实时看到进程的网络活动变化。
你想想看,当你面对一个陌生的 Windows 服务器,命令行敲得再溜,也不如打开一个图形界面扫一眼来得快。Resource Monitor 就是那个“扫一眼”的神器。
4.1 如何打开资源监视器
打开方式有好几种,我习惯用最快的那招:
- 快捷键法(推荐):按下
Win + R,输入resmon,回车。搞定。 - 任务管理器入口:Ctrl + Shift + Esc 打开任务管理器,点击“性能”选项卡,底部有个“打开资源监视器”的链接。
- 开始菜单搜索:直接搜“资源监视器”或“Resource Monitor”。
Win + R 输 resmon。这命令短,好记。如果你经常排查问题,建议把这个命令刻在脑子里。
4.2 网络选项卡:端口占用的主战场
打开 Resource Monitor 后,你会看到四个选项卡:概述、CPU、内存、磁盘、网络。别犹豫,直接点 “网络”。
网络选项卡下面又分几个子区域,咱们重点关注两个:
- “具有网络活动的进程”:这里列出了所有正在使用网络的进程。注意,不是所有进程都会显示在这里,只有那些有网络 I/O 的才会出现。
- “侦听端口”:这就是咱们今天的核心。它列出了所有正在监听的端口,包括 TCP 和 UDP。
嗯,这里要注意一点:“侦听端口” 列表默认只显示 TCP 端口。如果你想看 UDP,需要手动勾选上方的 “UDP” 复选框。我遇到过好几次,有人查了半天找不到 UDP 端口,就是因为没勾这个。
4.3 查看端口占用:一眼定位问题
在“侦听端口”区域,你会看到这样一个表格:
| 列名 | 说明 | 实战意义 |
|---|---|---|
| 协议 | TCP 或 UDP | 区分是哪种类型的端口占用 |
| 本地地址 | IP:端口 | 看端口号,比如 0.0.0.0:8080 |
| 远程地址 | 连接的远端 IP:端口 | 如果是 LISTENING 状态,这里一般是空 |
| 状态 | LISTENING、ESTABLISHED 等 | LISTENING 表示正在监听,就是咱们要找的 |
| PID | 进程 ID | 用来定位具体是哪个进程 |
| 映像 | 进程名称 | 比如 nginx.exe、java.exe |
举个例子。假设你启动了一个 Web 服务,发现 8080 端口被占用了。打开 Resource Monitor,在“侦听端口”里扫一眼,看到 0.0.0.0:8080 这一行,状态是 LISTENING,映像列显示 java.exe。好了,不用猜了,就是 Java 进程占的。
0.0.0.0:3306 就是 3306 端口。一眼扫过去,哪个端口被占,一目了然。
4.4 定位进程:从端口到进程的精准打击
找到端口后,怎么知道是哪个程序?Resource Monitor 已经帮你关联好了。在“侦听端口”表格里,“映像” 列就是进程名,“PID” 列是进程 ID。
但有时候,进程名可能不够具体。比如 svchost.exe 占了一个端口,你只知道是系统服务,但不知道是哪个服务。这时候怎么办?
我的做法是:
- 记下这个进程的 PID。
- 打开任务管理器(Ctrl + Shift + Esc),切换到“详细信息”选项卡。
- 找到对应的 PID,右键点击,选择“打开文件所在位置”或“转到服务”。
- 如果是
svchost.exe,可以看“命令行”列,或者用tasklist /svc /fi "PID eq 你的PID"命令查看它承载的服务。
System,PID 是 4。我当时以为是病毒,折腾了半天。后来才想起来,PID 4 是 Windows 的系统进程,445 端口是 SMB 服务在监听。嗯,这是正常的。所以看到 PID 为 4 的进程占端口,别慌,先确认是不是系统服务。
4.5 过滤和搜索功能:在海量信息中快速定位
服务器上跑的进程多了,“侦听端口”列表可能会很长。这时候就需要过滤和搜索了。
Resource Monitor 的过滤功能藏在 “侦听端口” 区域上方的搜索框里。你可以在搜索框里输入:
- 端口号:比如输入
8080,列表会只显示包含 8080 的行。 - 进程名:比如输入
nginx,只显示 nginx 相关的端口。 - IP 地址:比如输入
127.0.0.1,只显示本地回环地址的监听。
这个搜索是 实时过滤 的。你每输入一个字符,列表就会刷新。我个人习惯先输入端口号的前几位,比如 80,然后看下拉列表里有没有我要的。如果没有,再补全。
4.6 实战流程图:Resource Monitor 排查端口占用的完整路径
下面这张图,是我自己总结的排查路径。你照着走,基本不会漏掉什么。
4.7 避坑指南:我踩过的几个雷
用 Resource Monitor 查端口,有几个地方容易翻车。我把自己踩过的坑列出来,你注意一下:
- UDP 端口不显示:默认只显示 TCP。记得勾选上方的 “UDP” 复选框。我曾经帮人查 DNS 端口 53 的问题,查了半天没找到,最后发现是没勾 UDP。
- 进程名重复:多个
svchost.exe进程占不同端口。这时候别只看进程名,要看 PID。用tasklist /svc命令查具体服务。 - 端口被占用但进程看不到:有时候端口被占,但“侦听端口”列表里没有。这种情况多半是进程以 SYSTEM 或 NETWORK SERVICE 身份运行。试试用管理员权限打开 Resource Monitor。
- 搜索框不生效:如果你在搜索框里输入了内容,但列表没变化,检查一下是不是输入法处于全角状态。全角数字和半角数字在搜索时是不同的。