最直接有效的方式是运行 sudo lsof -i -P -n | grep LISTEN,可一次性列出所有监听的TCP/UDP端口及协议、绑定地址、进程名、PID和用户;查TCP端口用sudo lsof -iTCP -sTCP:LISTEN更精准;验证特定端口如3000可用lsof -P -n -i :3000或lsof -tiTCP -sTCP:LISTEN :3000;lsof异常时可用sudo netstat -anvp tcp | grep LISTEN兜底。
最直接有效的方式是运行 sudo lsof -i -p -n | grep listen,它能一次性列出所有处于监听状态的 tcp/udp 端口,并附带协议类型、绑定地址(如 *:3000 或 127.0.0.1:5000)、进程名、pid 和用户,无需安装额外工具,结果完整可靠。
查看全部监听端口(含进程详情)
这是开发中最常用的全局扫描命令:
- 打开终端(应用程序 → 实用工具 → 终端)
- 输入:sudo lsof -i -P -n | grep LISTEN
- 输入管理员密码(不显示字符,输完直接回车)
输出中每行包含 COMMAND(进程名)、PID(进程 ID)、USER(用户)、NAME(绑定地址与端口)。例如:
node 1234 user 25u IPv6 0x... TCP *:3000 (LISTEN)
其中 *:3000 表示监听所有网络接口,127.0.0.1:5000 表示仅本机可访问。
只查 TCP 监听端口(更精准,适合 Web/后端开发)
排除 DNS、NTP 等 UDP 干扰,聚焦真正提供服务的 TCP 端口:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 命令:sudo lsof -iTCP -sTCP:LISTEN
- 比
grep LISTEN更可靠——直接匹配内核 TCP 状态字段,不会漏掉非标准格式的监听项 - 能准确识别绑定到具体 IP(如 127.0.0.1:8080)而非通配符的服务
快速验证某个端口是否被占(比如 3000、8080、5432)
不看全量列表,直奔目标:
- 基础查法:lsof -P -n -i :3000(不需 sudo,适合查自己启动的进程)
- 只取 PID(方便后续 kill):lsof -tiTCP -sTCP:LISTEN :3000,输出仅为数字,可直接复制使用
- 无任何输出 = 该端口当前空闲
备用方案:netstat 全局扫描(权限受限时兜底)
当 lsof 因权限或系统配置异常返回空结果,可用 netstat 获取底层快照:
- 命令:sudo netstat -anvp tcp | grep LISTEN
- 注意 macOS 的 netstat 用点号分隔 IP 和端口,如 127.0.0.1.3000,不是冒号
- 输出中 “PID/Program name” 列若为空或为 “-”,说明需配合
ps -p PID -o comm=进一步查进程名










