返回博客
·9 分钟阅读·productdevbook

如何在 Mac 上按应用监控 Wi-Fi 使用量

如何在 Mac 上实时及长期查看每个应用的 Wi-Fi 使用量,且不必为此付 SaaS 月费。

  • macOS
  • Wi-Fi
  • Bandwidth
  • Tutorial

你在酒店 Wi-Fi 上,连接感觉比应有的慢,你不知道哪个应用在霸占链路。活动监视器会告诉你按进程的入字节和出字节,但它不告诉你那些字节走了 Wi-Fi 还是以太网——或当时你在哪个网络。要在 Mac 上按应用监控 Wi-Fi 用量,你得理解 macOS 怎么按进程算流量、怎么把那些字节路由到接口、以及怎么不留重应用整天跑着就把那数据浮现出来。

这指南走一遍 macOS 上"Wi-Fi 用量"真正意味着什么、你今天能用的内置工具、以及菜单栏监控怎么把同一份内核数据变成你工作时能瞄一眼的东西。

"Mac 上按应用监控 Wi-Fi 用量"实际是什么意思

macOS 在应用层不把 Wi-Fi 跟以太网分开跟踪。每个应用开 socket,内核把数据包通过当时是默认路由的任何接口(en0en1utun0 等)路由,按进程计数器加总字节,不管哪个物理链路承载。

所以人们搜怎样在 Mac 上按应用监控 Wi-Fi 用量时,几乎总是指两件事之一:

  1. 我 Mac 在 Wi-Fi 上时按应用流量 — 即,我在咖啡馆,以太网没插,所以所有流量经 en0。这种情况"按应用流量"和"按应用 Wi-Fi 流量"是一回事。
  2. 即使存在其他接口、按应用流量也是专门走 Wi-Fi 接口路由的。这在带 USB 以太网适配器的 Mac mini 上、或在你跟手机热点共享网络时重要。

两个问题归结为:"给我看按进程字节,并告诉我它们用哪个接口。" Apple 在 nettop 和活动监视器里发部分答案。专用工具填空缺。

macOS 怎样在 Wi-Fi 和以太网之间路由流量

打开 系统设置 → 网络。你会看到按优先级顺序的服务列表:Wi-Fi、USB 10/100/1000 LAN、雷雳桥接等。最顶活跃的服务为新连接胜出,除非应用明确绑到不同接口。

由此得出几件事:

  • 如果以太网和 Wi-Fi 都连着、以太网在服务顺序里更高,几乎没东西经 Wi-Fi 流,直到你拔。
  • 你在 Wi-Fi 上时打开连接的后台应用会保持那连接在 Wi-Fi 上,直到它们重连。所以切到以太网不会立刻移动 iCloud 同步——下次重连才会。
  • VPN 隧道(utun*)包装底层接口。字节出现在 utun0 承载隧道的物理接口上。

你能用终端里的 route get default 确认当前默认接口——它会打印 interface: en0(Wi-Fi)或 interface: en6(USB 以太网)或类似。

内置工具:nettop 和活动监视器

伸手要新东西之前,试试你 Mac 上已经有的工具。

nettop

打开终端跑:

nettop -P -m route

-P 按进程求和(不是按连接)、-m route 切到按路由分组的视图。你会看到像 Slack.21341bytes_inbytes_out 实时更新的行。按 c 切模式,q 退出。

限制:nettop 默认视图里不能把计数器钉到单一接口,它不归并辅助进程。你会看到 SlackSlack HelperSlack Helper (GPU)Slack Helper (Renderer) 作为四个单独行。

活动监视器——网络标签页

活动监视器的网络标签页显示从进程启动以来按进程的发送和接收总字节。它不显示实时速率、不归并辅助、不分接口。作为合理性检查有用,作为实时工具没用。

Wi-Fi 特定数据:wdutil

sudo wdutil info

打印链路层状态——信道、RSSI、PHY 模式、BSSID。配合按应用计数器,这告诉你慢是无线问题还是应用问题。

为什么菜单栏工具在 Mac 上按应用监控 Wi-Fi 用量赢

整天在终端窗口跑 nettop 不是好工作流。你想要一瞄,不是会话。这就是菜单栏监控登场的地方。

ova 驻在 macOS 菜单栏,默认显示实时上/下速率。点它你拿到按应用列表带当前速率加可拖动历史使用时间线。辅助进程——Slack Helper、Google Chrome Helper、Discord Helper——归并到父应用下,所以你读 "Slack" 而不是七行辅助。

当你 Mac 仅经 Wi-Fi 连接时,那个按应用列表就是你的 Wi-Fi 用量分解。当你有多个接口时,你能把时间线跟哪个接口活跃关联。

辅助进程归并
ova 把每个辅助 PID 归到它的父应用下,所以按应用列表读起来干净。不再为了找 Spotify 滚过四个 "Google Chrome Helper" 条目。

今天就看到按应用 Wi-Fi 用量的 5 分钟设置

下面是你现在就能跑的可重复工作流。

  1. 确认 Wi-Fi 是活跃接口。 终端里:route get default。找 interface: en0(或你 Wi-Fi 在系统设置 → 网络里显示的任何)。
  2. 装菜单栏监控。ova 放进 /Applications。约 3 MB,签名公证,运行于 macOS 14 及以上。
  3. 打开菜单栏列表。 你会看到按应用的实时速率。按当前速率排序找话多者。
  4. 拖时间线。 点进历史视图看应用是不是五分钟前、一小时前尖峰,或整个早上稳定。
  5. 跟 nettop 交叉核对。 如果一个数字看起来可疑,跑 nettop -P -m route 对比。两者应该接近一致——它们读同一份内核计数器。

看 ova 实战

一眼可瞄的菜单栏带宽监控——本地、签名、约 3 MB。

下载 macOS 版

读数据:什么算正常、什么不算

Wi-Fi 上典型工作日的一些基线:

  • Slack 空闲: 稳态 5–30 KB/s,websocket ping 加状态更新。huddle 期间或有人共享文件时更高。
  • 10 个标签的 Chrome: 剧烈变化,常空闲 0–200 KB/s,视频播或 Drive 同步开始时尖峰到 5+ MB/s。
  • Spotify 流: 默认音质约 150–300 KB/s,无损约 700 KB/s。
  • Zoom 1080p: 1:1 上下 2.5–3.8 Mbps,画廊视图更多。
  • 手机导入后 iCloud 照片同步: 能打满你上行几分钟。

如果你看到一个不该话多的应用持续流量——屏保、壁纸更新器、计算器——那是值得调查的旗标。

按接口计数实际重要的时候

多数 Mac 用户一次有一个活跃接口。但有真实情况你需要按接口粒度:

  • 你按 GB 给热点付费。 你想知道多少经 iPhone 共享网络(en4 或类似)vs 正常 Wi-Fi。
  • 你在公司 VPN 上。 utun0 上的流量对分流敏感——你想看哪些应用实际用了隧道。
  • 你有双链路 Mac mini 服务器。 Wi-Fi 做管理、以太网做工作负载,你需要确认没东西漏到错的方向。

内核通过 sysctl net.link.genericgetifaddrs(3) 暴露按接口计数器,但映射回进程要走 PID 到 socket 到接口的绑定。这恰是 nettop 内部做的,也是像 ova 这种好菜单栏监控在一眼可瞄的 UI 里浮现的。

隐私考虑

网络监控读元数据——按进程字节、一些工具里的主机名、时间戳。那敏感。装任何东西前查三件事:

  1. 数据住哪? 把你带宽历史送到云面板的监控在导出你行为。在描述里找"所有数据在磁盘"或"100% 本地"。
  2. 应用签名公证了吗? macOS Gatekeeper 在首次启动时告诉你。带内核访问的未签名监控不是你想跑的。
  3. 它要求账号吗? 不该要。本地监控不需要登录凭证。

ova 纯本地、签名公证、从不要账号。如果你决定它不适合你,14 天无条件退款。

常见问题

Little Snitch 不是已经做了?

Little Snitch 是防火墙——它工作是阻断或允许连接。它也显示流量,但焦点是规则,不是指标。ova 是监控——它工作是给你看在发生什么,没有阻断层。它们配得好。想强制策略时跑 Little Snitch。想要安静、准确读数时跑 ova。

iPhone 上的 Wi-Fi 用量怎么样?

不同 OS、不同 API。iOS 在 设置 → 蜂窝网络 暴露按应用蜂窝数据,但不向任何人——包括第三方应用——暴露按应用 Wi-Fi 数据。iOS 上没有 nettop 等价物。抱歉。

ova 在 macOS 13 或更早能用吗?

ova 要求 macOS 14(Sonoma)或更高。更早版本缺一些应用为准确计数用的按进程网络 API。

收尾

要在 Mac 上按应用监控 Wi-Fi 用量,你真要叠两个问题:按进程计数加按接口意识。macOS 通过 nettop 和内核给你原始数据;活动监视器给你快照;菜单栏监控把同样数字变成不需要终端窗口的实时、可拖动视图。

如果你今天只做一件事,装 ova,工作时让它跑一小时,查按应用列表。话多者会让你意外——它们总会。