nettop 是 macos 自带的进程级网络监控工具,支持实时交互查看、按进程/端口过滤、单位切换、排序及快照导出,无需 sudo 但部分代理或内核进程流量不可见。

nettop 是 macOS 系统自带的命令行工具,用于实时监控进程级网络活动,能清晰显示每个应用或进程的入站、出站流量、连接状态、协议类型等信息。
基础用法:启动与退出
直接在终端输入 nettop 即可进入交互式界面。默认按总流量排序,顶部显示全局统计(如总接收/发送字节数),下方列出活跃连接和对应进程。
- 按 q 退出
- 按 ? 查看快捷键帮助
- 按 d 切换显示单位(B/s、KB/s、MB/s)
- 按 o 可按不同字段排序(如 PID、Bytes In、Bytes Out、State)
聚焦特定进程或端口
若想快速定位某个程序(比如 Safari)或某类连接(如 HTTPS),可用过滤功能:
- nettop -P Safari —— 仅显示 Safari 进程的网络活动
- nettop -P 8080 —— 显示本地监听或连接到 8080 端口的所有连接
- nettop -P "Google Chrome" —— 注意带空格的进程名需加引号
支持通配符,例如 nettop -P "Chro*" 可匹配 Chrome 相关进程。
导出数据便于分析
nettop 支持一次性快照输出,适合记录或脚本调用:
- nettop -L 1 —— 输出当前所有连接的一次性列表(不含实时刷新)
- nettop -L 1 -P "Spotify" | head -10 —— 查看 Spotify 前 10 条连接详情
- 结合 grep 和 awk 提取关键字段,例如:
nettop -L 1 | awk '$5 ~ /ESTABLISHED/ {print $1, $4, $5}' —— 打印 ESTABLISHED 状态的进程名、远程地址和状态
常见问题与注意事项
nettop 需要用户有基本权限,但无需 sudo;不过部分系统进程(如 kernel_task)可能不显示完整连接信息。
- 如果看不到某些进程的流量,可能是该进程使用了 PF/Network Extension 拦截或走代理,nettop 无法穿透这类抽象层
- “Idle” 或 “Closed” 状态连接通常为已断开但尚未被清理的条目,可忽略
- IPv6 地址会完整显示,若需简化查看,可在终端设置中启用 IPv6 缩写(系统默认已支持)
- 长时间运行时建议搭配 watch -n 2 'nettop -L 1 | head -15' 实现每 2 秒刷新一次摘要









