在 macOS 中确认监听端口及对应 PID,首选 sudo lsof -i -P -n | grep LISTEN;netstat 不支持直接显示 PID,需配合 lsof 查询;ss 需通过 Homebrew 安装 iproute2mac 后用 sudo ss -tulnp 获取完整信息。

如果您需要在 macOS 系统中确认哪些端口当前处于监听状态,并获取与之关联的进程 ID(PID),可通过终端命令直接查询。以下是实现该目标的具体操作步骤:
一、使用 lsof 命令查看监听端口及对应 PID
lsof(list open files)是 macOS 自带的工具,可列出所有打开的文件和网络连接,包括监听中的 TCP/UDP 端口及其所属进程。该命令需以管理员权限运行才能显示全部进程信息。
1、打开“终端”应用程序(位于“应用程序 → 实用工具”中)。
2、输入以下命令并按回车执行:sudo lsof -i -P -n | grep LISTEN
3、系统会提示输入当前用户的管理员密码,输入后不显示字符,正确输入后按回车继续。
4、输出结果中每行包含 COMMAND(进程名)、PID(进程 ID)、USER(所属用户)、TYPE、NODE 以及 NAME 字段;NAME 列末尾形如 “*:8080 (LISTEN)” 或 “127.0.0.1:3000 (LISTEN)” 的即为监听地址与端口。
二、使用 netstat 命令结合 grep 筛选监听状态
netstat 是传统网络状态查看工具,在较新版本 macOS 中虽已标记为弃用但仍可用,其输出更侧重于协议与端口绑定关系,配合文本过滤可快速定位监听项。
1、在终端中执行:sudo netstat -tuln | grep -E '^[tcp|udp]'
2、若需同时显示对应 PID 和程序名,需追加 -p 参数(但 macOS 版 netstat 不支持 -p;此方法在该平台仅能显示端口与协议,无法直接输出 PID)。
3、为补足 PID 信息,可将 netstat 输出的端口号提取后,再用 lsof 单独查对应进程,例如监听端口为 5000,则执行:sudo lsof -i :5000
三、使用 ss 命令替代方案(需 Homebrew 安装)
ss(socket statistics)是现代高性能网络工具,功能类似 netstat 但更精确高效;macOS 默认未预装,需通过包管理器安装,安装后可直接显示监听端口与 PID。
1、若尚未安装 Homebrew,先在终端运行:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2、安装 iproute2mac:brew install iproute2mac
3、执行监听端口查询:sudo ss -tulnp
4、输出中 State 列为 LISTEN,PID/Program name 列即显示格式为 “PID,进程名”,例如 “1234/nginx”。










