直接执行sudo netstat -anvp | grep ESTABLISHED可查看所有已建立的TCP/UDP连接,含本地与远程地址、端口、状态及PID;IPv4地址与端口用点号分隔,需sudo权限才能显示进程信息。

你想在Mac终端里直接看到系统底层所有已成功建立的TCP/UDP连接,包括本地与远程地址、端口、连接状态及对应进程,而不是只看监听端口或路由表。
用netstat精准筛选ESTABLISHED连接
打开终端,执行:netstat -an | grep ESTABLISHED。这会过滤出所有处于已建立状态的套接字,不含监听、关闭或等待中的条目。
注意:默认输出中IPv4地址与端口用点号分隔(如127.0.0.1.5000),不是冒号;IPv6则用方括号包裹+冒号(如[::1].3000)。别把127.0.0.1.8080误读成IP为127.0.0.18080。
若想同时看到进程名和PID,必须加sudo权限:运行 sudo netstat -anvp | grep ESTABLISHED。-v参数启用详细模式,-p要求显示进程信息,否则PID列为空。
用lsof按连接状态反查活跃Socket
方法一:查全部已建立连接(含进程与协议)
执行 sudo lsof -i -P -n -sTCP:ESTABLISHED。-sTCP:ESTABLISHED限定只输出TCP已建立连接;-P和-n确保端口和IP以数字形式呈现,避免解析延迟或歧义。
方法二:补全UDP活跃连接(UDP无严格“已建立”状态,但可查活跃通信)
运行 sudo lsof -iUDP -P -n。UDP连接不维持状态,此命令列出所有当前使用UDP的进程及其目标地址,比如DNS查询、NTP同步或音视频流。
【必须加sudo,否则看不到其他用户或系统进程的连接】 普通用户执行lsof时,仅能查看自身进程的网络活动,无法发现后台服务或root进程发起的真实连接。
用ss获取带PID的精简实时视图
第一步:确认已安装iproute2mac
在终端输入 which ss,若返回空行,说明未安装,需先运行 brew install iproute2mac。
第二步:执行带权限的连接扫描
输入 sudo ss -tunp state established。-t只查TCP,-u包含UDP,-n禁DNS解析,-p直出PID与进程名,state established严格匹配已建立状态。
输出字段极简:Local Address:Port → Peer Address:Port → PID/Program name。比netstat少一半冗余列,适合快速扫视可疑远程IP。
若某行Peer Address显示为*:*,说明该UDP连接尚未绑定远端(如刚发出DNS请求未收响应),不属于稳定活跃连接,可忽略。

















