macos终端诊断网络需组合使用netstat、lsof、ss、nc等命令:1.netstat查连接与路由;2.lsof定位端口进程;3.ss高效查看带pid的端口;4.nc测试端口连通性。

如果您需要在 macOS 系统中通过终端快速掌握当前网络连接、监听端口、路由路径及协议活动等底层状态,则需借助原生网络诊断命令进行多维度观测。以下是针对不同网络状态维度的实操方法:
一、使用 netstat 查看全量网络连接与监听端口
netstat 是 macOS 内置的网络统计工具,可输出 TCP/UDP 连接状态、监听端口、路由表及接口统计信息;其输出默认冗长,需配合参数与管道过滤以聚焦关键状态。
1、启动“终端”(位于“应用程序 → 实用工具”或通过 Spotlight 搜索)。
2、执行命令:netstat -an,查看所有活动连接与监听套接字的原始列表。
3、筛选仅显示处于监听状态的 TCP 端口:netstat -an | grep LISTEN。
4、若需同时显示进程 ID(PID)并限制为 TCP 协议,运行:sudo netstat -tulv | grep LISTEN(需输入管理员密码)。
二、使用 lsof 定位监听端口对应的具体进程
lsof 将网络连接视为“打开的文件”,因此能精确映射端口到进程名、PID、用户及绑定地址,是排查端口冲突与异常服务的核心手段。
1、在终端中输入:sudo lsof -i -P -n | grep LISTEN,列出全部未解析主机名与服务名的监听项。
2、查询特定端口(如 3000)的占用者:sudo lsof -i :3000。
3、仅提取 PID 数值(便于后续操作):sudo lsof -ti :3000。
4、检查 UDP 监听端口(如 DNS 端口 53):sudo lsof -i udp:53。
三、使用 ss 命令获取高性能端口状态视图
ss(socket statistics)是现代替代 netstat 的高效工具,输出更简洁、响应更快,且原生支持 PID/程序名直出,但需通过 Homebrew 安装兼容版本。
1、若尚未安装 Homebrew,执行:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。
2、安装 iproute2mac:brew install iproute2mac。
3、查看所有监听 TCP/UDP 端口及对应进程:sudo ss -tulnp。
4、精准匹配某端口(如 8080):sudo ss -tulnp | grep ':8080'。
四、使用 netstat -rn 查看当前路由表
路由表决定数据包如何转发至目标网络;-r 参数调出路由信息,-n 参数禁用 DNS 解析,确保输出为纯 IP/掩码格式,避免延迟与不确定性。
1、在终端中直接运行:netstat -rn。
2、观察 “Destination” 列识别本地子网与默认网关,“Gateway” 列确认下一跳地址,“Netif” 列标明出口网卡(如 en0、en1)。
3、若需持续监控路由变化,可用 watch 命令刷新:watch -n 5 'netstat -rn'(每 5 秒更新一次)。
五、使用 nc 测试端口连通性与开放状态
nc(Netcat)不显示监听进程,但可验证端口是否真正接受连接,适用于区分“监听中”与“防火墙拦截”场景。
1、测试本机指定端口是否可达:nc -zv 127.0.0.1 8080。
2、测试远程主机端口(如公网 Web 服务):nc -zv example.com 443。
3、批量探测连续端口范围(如 8000–8010):for port in {8000..8010}; do nc -zv 127.0.0.1 $port; done。
4、若返回 succeeded 或 open,表示端口响应正常;若为 Connection refused,说明服务未运行或拒绝连接。











