Mac终端查看本地开放端口需依次使用netstat、lsof、nc和网络实用工具:1. sudo netstat -anvp tcp | grep LISTEN列监听端口;2. lsof -iTCP -sTCP:LISTEN查进程详情;3. nc -zv 127.0.0.1 端口号验证连通性;4. 系统报告中“网络实用工具”端口扫描交叉验证。

Mac终端查看本地开放了哪些端口,是为了快速定位正在监听的服务、排查开发服务器启动失败或安全审计时确认暴露面,避免因端口静默监听导致的安全隐患或调试干扰。
用 netstat 扫描所有 TCP 监听端口
这一步最直接,能一次性列出所有准备接收外部连接的 TCP 端口,不依赖进程名解析,结果稳定可靠。
1、打开终端(Command + 空格 → 输入“终端” → 回车)。
2、执行命令:sudo netstat -anvp tcp | grep LISTEN。
3、命令会输出多行,重点关注 “Local Address” 列:若显示 *:3000 或 127.0.0.1:8080,说明该端口正被监听;* 表示监听所有网卡,风险更高,需特别留意。
4、注意:必须加 sudo,否则部分系统服务(如 launchd 管理的守护进程)的 PID 和程序名将显示为 “-” 或空白,无法溯源。
用 lsof 查看带进程信息的端口占用
当你不仅想知道“哪个端口开着”,更要知道“谁在开”,lsof 就是首选——它把端口当文件处理,原生支持 macOS,无需安装额外工具。
方法一:查全部监听中的 TCP 端口(推荐)
输入:lsof -iTCP -sTCP:LISTEN
输出包含 COMMAND(进程名)、PID、USER、PORT 四列,一目了然。此命令自动过滤掉 ESTABLISHED 等非监听连接,避免误判。
方法二:查指定端口是否被监听(精准验证)
把 3000 换成你要查的实际端口号:lsof -P -n -i :3000
【-P -n 参数必须加】,否则可能卡顿数秒,且服务名(如 http→80)会被反向解析成域名,干扰识别。
用 nc 测试单个端口是否真正可连通
netstat 和 lsof 只告诉你“端口在监听”,但不保证它真能响应请求——防火墙、bind 地址限制(如只绑 127.0.0.1)、服务崩溃挂起都可能导致“开着却连不上”。nc 是验证通路的最后一环。
执行:nc -zv 127.0.0.1 3000
若返回 Connection succeeded!,说明本地可连;若返回 Connection refused,说明进程已退出或 bind 失败;若卡住超时,则大概率被防火墙拦截或监听地址不是 127.0.0.1。
这一步操作起来很简单,直接把命令复制进终端回车就行。
图形化辅助:网络实用工具端口扫描
适合不信任命令行结果、需要交叉验证,或想给同事/新人直观演示时使用。
1、点击左上角苹果图标 → “关于本机” → “系统报告”。
2、左侧边栏滚动到底部,点“网络实用工具”。
3、切换到“端口扫描”标签页。
4、在 IP 地址框中填入本机 IPv4 地址(可在“系统设置 → 网络”里看到,如 192.168.1.105)。
5、点击“扫描”,几秒后列出所有状态为 open 的 TCP 端口。
注意:该工具仅扫描 TCP,不显示 UDP 端口;且结果不含进程名,仅作状态佐证。

















