# 查出 Mac 上哪个 App 在占网

> 活动监视器的进程流量是累计值，不能直接代表当前带宽。结合 nettop 查看实时变化，再用 lsof 核对连接目标。

Published: 2026-08-12 | Updated: 2026-09-05

有东西在占着网，Wi-Fi 图标一直在动，人却没在干什么，热点流量一个下午就烧完，或者一坐下来干活视频通话就开始卡。macOS 能回答这个问题，只是工具散落各处，而且每个工具里最显眼的那个数字都是累计值而不是实时值，人就被带到了错误的进程上。

**短答：** 活动监视器 的网络标签能给出进程名，但那些列统计的是每个进程启动以来的累计值，要看*此刻*谁在传数据，用 `nettop`，要看一个进程在跟哪些远端主机说话，用 `lsof -i`。

## 活动监视器 能给出进程名

打开 活动监视器，选 **网络** 标签，凡是传过数据的进程都会出现，带着已发送和已接收的字节数。

按这些列排序，人才会被带到错误的进程上，它们是每个进程启动以来攒下来的总量，所以上次重启后就一直在跑的守护进程，会压过这一分钟正在把链路打满的那个应用，按「已接收字节」排序，排在最上面的十有八九不是此刻的元凶。

有两行经常把人吓一跳，通常不用管：

- **mDNSResponder** 负责整台系统的 DNS 和本地网络发现，开机几周的 Mac 上它能显示到 GB 级，它只是其他进程解析名字时的代理，不是自己在后台下载。
- **kernel_task** 会出现，是因为网络工作会经过内核，同样的误判在 CPU 上的样子见 [kernel_task 占用过高](https://mole.fit/zh/blog/kernel-task-high-cpu-mac)。

窗口底部有一张每秒进出流量的实时图，改什么设置的时候该看的是这张图，不是那些列。

Apple 的[活动监视器网络指南](https://support.apple.com/guide/activity-monitor/actmntr1006/mac)明确区分了进程启动以来的“接收/发送的数据”和窗口底部实时的“每秒接收/发送的数据”。

## `nettop` 显示此刻谁在传

`nettop` 才是回答真正那个问题的工具，macOS 自带，不用装。

```
nettop -P -L 2 -d -J bytes_in,bytes_out
```

```
,bytes_in,bytes_out,
syslogd.362,0,22701,
apsd.368,685304,414375,
mDNSResponder.480,4189609493,104188210,
```

`-P` 按进程聚合，`-L 2` 输出两次 CSV 采样，`-d` 让后一次变成区间增量，`-J` 只选需要的列。第一份是基线，第二份才是采样期间真正移动的数据。要持续观察就交互运行 `nettop -P -d`。

## `lsof -i` 显示它连到了哪里

有了名字，下一问通常是数据发到了哪里。

```
lsof -nP -iTCP -sTCP:ESTABLISHED
```

`-n` 跳过反向 DNS，`-P` 跳过端口名查询，`-iTCP` 只看 TCP，`-sTCP:ESTABLISHED` 排除监听和已关闭套接字。普通用户权限通常够用，只有缺少系统进程时才考虑提权。

解析这些地址的时候得老实，属于大型云厂商的 IP 几乎说明不了什么，因为大半个互联网都托管在那里，把它当线索，别当鉴定。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/network-process-to-destination.webp" width="1360" height="454" loading="lazy" alt="活动监视器给出累计的进程总量，nettop 测量实时进程增量，lsof 把选中的进程映射到活动远端地址。">
  <figcaption>依次使用三个视图：先找进程家族，再确认当下流量，最后检查活动连接的目的地。</figcaption>
</figure>

## 常见的那些答案

先别假定出了问题，那些本来就会自己用网、不用人点的东西，先核一遍。

| 原因 | 怎么认出来 | 在哪管 |
|---|---|---|
| iCloud 照片同步 | 导入照片后持续上传 | 照片 > 设置 > iCloud |
| iCloud Drive | 大文件变动后出现活动 | 系统设置 > Apple 账户 > iCloud |
| macOS 或 App Store 更新 | `softwareupdated`、`appstoreagent` | 系统设置 > 通用 > 软件更新 |
| 第三方同步客户端 | Dropbox、Google Drive、OneDrive 的助手进程 | 应用自己的偏好设置 |
| 备份软件 | 按计划长时间稳定上传 | 备份应用本身 |
| 浏览器标签页 | 视频、卡住的上传、自动播放的页面 | Chrome 的任务管理器、Safari 的活动窗口 |

软件更新值得单独说一句，因为它默认后台下载，完整的 macOS 安装包有好几个 GB，在按流量计费的链路上，往往就是这一个设置在作怪。

## macOS 隐瞒的事

三条边界，不少热门文章会跳过：

- **没有内置的按应用带宽历史。** 活动监视器 和 `nettop` 报的都是进程启动以来，或开始盯着的那一刻起的数，macOS 里没有任何一份可以事后查阅的按应用记录。
- **按进程的总量不是按应用的总量。** 浏览器会把流量摊到多个渲染进程上，一个助手守护进程也可能同时给好几个应用带流量。
- **经过 VPN 或系统扩展的流量，可能记在扩展头上**，而不是产生流量的那个应用。

声称能给出完整按应用历史拆分的工具，要么自己装了一个网络过滤器，要么在估算，信那个数字之前，得先知道它是哪一种。

## 一套可重复的检查

1. 看 活动监视器 网络标签底部的实时图，别看那些列。
2. 运行一次 `nettop -P -L 2 -d -J bytes_in,bytes_out`，它会输出两次采样，读取第二次的区间增量。
3. 对涨上去的那个进程跑 `lsof -i -n -P`，看它连到了哪里。
4. 暂停嫌疑应用或同步服务，确认图掉下去。
5. 如果流量没下降，还不能排除其他应用或助手进程，继续检查软件更新、iCloud 和其他仍在运行的服务。

第四步是人最容易跳过的，也是鉴定和猜测的分界。

## 监视器放在哪

[Mole](https://mole.fit/zh/) 把实时网络吞吐放在菜单栏，挨着 CPU、内存和温度状态，连接忙的时候当场能看见，不用事后再拼，它报自己能测到的吞吐，不会为了声称一份 macOS 本身不提供的按应用历史，去装一个网络过滤器。

## 常见问题

### 为什么 mDNSResponder 用了那么多数据？

它给整台系统解析名字、做本地网络发现，很多其他进程的流量就被记在它头上，它自己并没有在下载什么。

### 能看到某个应用昨天用了多少数据吗？

macOS 看不了，没有内置的按应用历史，提供这个能力的第三方工具会自己装一个网络扩展来观察流量。

### 热点上网时怎么查是谁在用流量？

到系统设置 > Wi-Fi > 详细信息 里给这个网络打开低数据模式，会停掉包括自动更新下载在内的几项后台服务，剩下的再用上面的 `nettop` 对比去查。

### 网络活动高是不是中了恶意软件？

单凭流量高不能判断。先核对更新、同步和备份等常见来源，再看进程归属、连接目的地和暂停后的变化，无法解释的持续流量才需要进一步调查。

---

Canonical HTML page: https://mole.fit/zh/blog/what-app-is-using-my-network-mac
Blog index for agents: https://mole.fit/zh/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
