netstat是macOS原生网络诊断命令,可查看连接状态、监听端口及路由表:1.netstat -an | grep LISTEN查监听端口;2.netstat -an | grep ESTABLISHED查已建立连接;3.netstat -rn查路由表;4.配合sudo lsof -i :端口号定位进程。

在 macOS 终端中,netstat 是查看网络连接状态最直接的原生命令之一,能快速列出活动连接、监听端口、路由表等底层信息。它不需额外安装,但默认输出冗长,需配合参数和过滤才能聚焦关键内容。
查看所有监听端口(TCP/UDP)
监听端口代表本地有服务正在等待连接,比如 Web 服务器、数据库或开发工具。运行以下命令可列出全部:
- netstat -an | grep LISTEN —— 显示所有处于监听状态的套接字(含 IPv4/IPv6)
- netstat -tuln —— 仅显示 TCP(-t)和 UDP(-u)的监听端口(-l),数字格式(-n),更清晰
- 若结果为空,可能因权限限制未显示系统级服务,可加 sudo 提权: sudo netstat -tuln
筛选已建立的活跃连接
用于确认当前与哪些远程地址存在通信,比如浏览器访问网页、后台同步或远程登录:
- netstat -an | grep ESTABLISHED —— 列出所有已成功建立的 TCP 连接
- netstat -an | grep -E "SYN_SENT|TIME_WAIT" —— 查看连接发起中或刚关闭的临时状态,辅助排查连接异常
- 想只看 IPv4 的 TCP 连接?用:netstat -t4n | grep ESTABLISHED
查看本机路由表(判断数据走向)
路由表决定发往不同目标的数据包从哪个网卡出去、经过哪个网关,是诊断“能 ping 通但打不开网页”类问题的关键:
- netstat -rn —— 显示当前生效的路由规则(-r 表示路由,-n 禁用 DNS 解析)
- 重点关注 default 行的 Gateway 值(即默认网关 IP),以及 Destination 为 link# 或子网段的 Netif(如 en0、en1)
- 验证网关是否可达,可紧接着执行:ping -c 3 [网关IP]
结合 lsof 定位占用端口的进程
netstat 本身在 macOS 上无法直接显示进程名(-p 参数仅输出 PID),要查清“哪个程序占了 3000 端口”,需搭配 lsof:
- sudo lsof -i :3000 —— 直接查端口 3000 的使用者(含进程名、PID、用户)
- sudo lsof -i TCP | grep LISTEN —— 查所有 TCP 监听服务及其进程
- 拿到 PID 后,可用 kill -9 [PID] 强制终止异常服务(谨慎操作)


















