系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

netstat

查看 macOS 的套接字、路由表、接口统计和协议计数器。

补充说明

netstat 在 macOS 上仍是主要工具,常用的有 -an 看所有套接字、-rn 看路由、-i 看接口计数、-s 看协议统计。和 Linux 不同,macOS 的 netstat 没有 -t、-u 这类按协议筛选的短选项,也没有把套接字映射到 PID 的能力;列监听端口通常用 netstat -an | grep LISTEN,要 PID 则换 lsof。

macOS 的 -l 不是 Linux 的 “listening”,而是完整打印 IPv6 地址;-L 才显示监听队列长度。地址族用 -f inet 或 -f inet6 过滤。BSD 风格输出里,本地地址写成 192.168.3.19.57694 或 *.8080,最后一段是端口,不是 IP 的一部分。

netstat 只读,不需要 sudo;它看到的是内核套接字表,不显示进程名。Linux 上 netstat 已被 ss 取代,macOS 没有 ss,也没有 /proc/net,排障时不要照搬 Linux 的参数组合。

常用示例

# 查看所有套接字,输出可能很长,先截断
% netstat -an | head -20

# 列出本机所有监听端口
% netstat -an | grep LISTEN

# 只看 IPv4 的监听端口
% netstat -an -f inet | grep LISTEN

# 查看路由表和默认网关
% netstat -rn

# 查看 IPv6 路由
% netstat -rn -f inet6

# 查看接口的收发包、错误和丢包计数
% netstat -i

# 查看 TCP 协议统计,定位重传、连接失败
% netstat -s -p tcp | head -30

# 查看监听队列长度和套接字缓冲区
% netstat -anL | grep LISTEN
% netstat -m | head -20

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. macOS 上怎样列出所有 TCP 监听端口?
  2. netstat -rn 输出里的 U、G、S 分别表示什么?
  3. 为什么 netstat 看不到监听端口对应的进程名?
答案
  1. 用 netstat -an | grep LISTEN,需要只看 IPv4 时加 -f inet;要 PID 则用 sudo lsof -nP -iTCP -sTCP:LISTEN。
  2. U 表示路由可用(up),G 表示经由网关,S 表示静态路由;缺少 U 的路由不会被使用。
  3. macOS netstat 读取的是内核套接字表,不做进程映射;必须用 lsof 或 lsof -i 才能看到 PID 和进程名。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令