活动监视器无法追踪底层网络系统调用,仅显示进程级吞吐量;需用instruments(system trace)、nettop、tcpdump/wireshark或dtruss进行syscall、连接详情或抓包分析。
活动监视器无法直接追踪底层网络系统调用(如 socket、connect、sendto、recvfrom 等内核级 syscall)。
它显示的是进程级网络吞吐量统计,数据来源于内核的网络协议栈计数器(如 netstat 类接口),而非系统调用层面的实时捕获。换句话说:
- 它告诉你“谁在收发多少字节”,
- 但不告诉你“谁在什么时候调用了哪个 socket 函数、连了哪个 IP 端口、发了什么内容”。
若需追踪底层网络系统调用,应使用以下专业工具:
-
dtrace或Instruments(macOS 自带)-
Instruments中的 “System Trace” 模板可捕获包括socket,connect,read,write,sendto,recvfrom在内的完整 syscall 调用链,支持按进程、线程、堆栈过滤,还能关联到具体网络事件(如 DNS 查询、TLS 握手)。 - 启动方式:打开
Instruments→ 新建模板 → 选择 “System Trace” → 点击右上角录制按钮,再复现网络行为即可。
-
-
nettop(终端命令,系统原生)- 提供比活动监视器更细粒度的连接视图:显示每个进程的活跃 TCP/UDP 连接、远程地址、端口、状态(ESTABLISHED、TIME_WAIT)、每秒收发包数与字节数。
- 示例:
nettop -P -L 0 # 实时显示所有进程的连接详情,无日志滚动 nettop -J "pid,command,local_addr,remote_addr,state,bytes_in,bytes_out" # 自定义字段输出
-
tcpdump或Wireshark(抓包级分析)- 直接捕获网卡原始数据帧,可看到 IP、TCP/UDP 头、应用层载荷(如 HTTP 请求),适用于排查连接失败、超时、重传等底层问题。
- 注意:需管理员权限,且不直接关联到进程名(
tcpdump本身不绑定进程,需配合lsof -i或nettop交叉验证)。
-
dtruss(syscall 级跟踪,需 sudo)- 对单个进程做系统调用跟踪,能精确列出每次
connect()是否成功、返回值、耗时等。 - 示例:
sudo dtruss -f -t connect,sendto,recvfrom curl https://example.com
- 对单个进程做系统调用跟踪,能精确列出每次
活动监视器适合快速定位“哪个进程吃带宽”,但不是 syscall 追踪工具。真正需要看“调用了什么、连了哪里、为什么卡住”,请切换到 Instruments、nettop 或 dtruss。











