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 占了一个端口,你只知道是系统服务,但不知道是哪个服务。这时候怎么办?

我的做法是:

  1. 记下这个进程的 PID。
  2. 打开任务管理器(Ctrl + Shift + Esc),切换到“详细信息”选项卡。
  3. 找到对应的 PID,右键点击,选择“打开文件所在位置”或“转到服务”。
  4. 如果是 svchost.exe,可以看“命令行”列,或者用 tasklist /svc /fi "PID eq 你的PID" 命令查看它承载的服务。
我曾经踩过的坑: 有一次,我发现 445 端口被占,映像显示 System,PID 是 4。我当时以为是病毒,折腾了半天。后来才想起来,PID 4 是 Windows 的系统进程,445 端口是 SMB 服务在监听。嗯,这是正常的。所以看到 PID 为 4 的进程占端口,别慌,先确认是不是系统服务。

4.5 过滤和搜索功能:在海量信息中快速定位

服务器上跑的进程多了,“侦听端口”列表可能会很长。这时候就需要过滤和搜索了。

Resource Monitor 的过滤功能藏在 “侦听端口” 区域上方的搜索框里。你可以在搜索框里输入:

  • 端口号:比如输入 8080,列表会只显示包含 8080 的行。
  • 进程名:比如输入 nginx,只显示 nginx 相关的端口。
  • IP 地址:比如输入 127.0.0.1,只显示本地回环地址的监听。

这个搜索是 实时过滤 的。你每输入一个字符,列表就会刷新。我个人习惯先输入端口号的前几位,比如 80,然后看下拉列表里有没有我要的。如果没有,再补全。

进阶用法: 你还可以在“具有网络活动的进程”区域,右键点击某个进程,选择 “监视”。这样,Resource Monitor 会只显示这个进程的网络活动。其他进程的端口和连接都会被隐藏。这个功能在排查单个应用时特别好用。

4.6 实战流程图:Resource Monitor 排查端口占用的完整路径

下面这张图,是我自己总结的排查路径。你照着走,基本不会漏掉什么。

Resource Monitor 端口排查流程图 Resource Monitor 端口排查流程图 打开 Resource Monitor 点击“网络”选项卡 查看“侦听端口”区域 搜索框输入端口/进程名 查看“映像”和“PID”列 确认进程,解决问题 说明: • 搜索框支持实时过滤 • 可勾选 TCP/UDP 切换 • 右键进程可“监视” 常见问题: • PID 4 是 System 进程 • svchost 需查具体服务 • 端口 0 表示随机端口

4.7 避坑指南:我踩过的几个雷

用 Resource Monitor 查端口,有几个地方容易翻车。我把自己踩过的坑列出来,你注意一下:

  • UDP 端口不显示:默认只显示 TCP。记得勾选上方的 “UDP” 复选框。我曾经帮人查 DNS 端口 53 的问题,查了半天没找到,最后发现是没勾 UDP。
  • 进程名重复:多个 svchost.exe 进程占不同端口。这时候别只看进程名,要看 PID。用 tasklist /svc 命令查具体服务。
  • 端口被占用但进程看不到:有时候端口被占,但“侦听端口”列表里没有。这种情况多半是进程以 SYSTEM 或 NETWORK SERVICE 身份运行。试试用管理员权限打开 Resource Monitor。
  • 搜索框不生效:如果你在搜索框里输入了内容,但列表没变化,检查一下是不是输入法处于全角状态。全角数字和半角数字在搜索时是不同的。
重要提醒: Resource Monitor 显示的端口信息是 实时 的。如果你启动了一个服务,但列表里没看到,等几秒再刷新。有时候进程启动后,端口监听会有短暂的延迟。别急着下结论说服务没起来。