最直接有效的方式是使用lsof命令,它是macos自带工具,无需安装,能同时显示监听端口、协议类型、绑定地址、进程名和pid;推荐用lsof -i -p -n | grep listen全局扫描,或lsof -itcp -stcp:listen精确筛选tcp监听,lsof -ti :3000可快速提取pid。
最直接有效的方式是使用 lsof 命令,它是 macos 自带工具,无需安装,能同时显示监听端口、协议类型、绑定地址、进程名和 pid。
列出全部 TCP/UDP 监听端口(含进程详情)
在终端中运行:
sudo lsof -i -P -n | grep LISTEN
说明:
-
-i:只显示网络连接(含端口) -
-P:禁用端口号转服务名(如跳过把 3000 映射成“http-alt”),避免歧义和延迟 -
-n:禁用 DNS 反向解析(跳过把 127.0.0.1 转成 localhost),保证地址格式统一、响应更快 -
grep LISTEN:仅过滤出真正处于监听状态的条目,排除 ESTABLISHED、TIME_WAIT 等无关连接
输出示例中,NAME 列末尾为 *:3000 (LISTEN) 或 127.0.0.1:8080 (LISTEN),PID 列即为对应进程 ID。
只查 TCP 监听(更精准,适合 Web 开发等场景)
若你只关心 TCP 服务(如本地服务器、数据库),用这个命令可排除 UDP 干扰:
sudo lsof -iTCP -sTCP:LISTEN
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
优势:
-
-iTCP限定协议,不混入 DNS(udp:53)、NTP(udp:123)等 UDP 监听项 -
-sTCP:LISTEN直接匹配 TCP 状态字段,比grep LISTEN更可靠——某些非标准监听可能不带括号,但状态字段一定存在 - 能捕获绑定到具体 IP(如
127.0.0.1:3000)而非通配符(*:3000)的服务
快速提取某端口的 PID(用于后续终止)
当你已知端口号(比如 5000),想跳过查看全量列表,直接拿到 PID:
lsof -ti :5000
说明:
-
-t:精简输出,只显示 PID 数字(无表头、无其他列) -
-i:指定网络资源 -
:5000:匹配本地或远程任意地址的 5000 端口 - 该命令不需
sudo,但只返回 LISTEN 和 ESTABLISHED 连接;如需确保是监听态,建议加-sTCP:LISTEN,即:lsof -tiTCP -sTCP:LISTEN :5000
补充说明:为什么不用 netstat 或 ss?
macOS 自带的 netstat 不支持 -p 参数,执行 sudo netstat -tuln 后看不到 PID 或程序名,只能知道 “端口在监听”,却不知道“谁在监听”。
ss 功能更强,但 macOS 默认不预装,需先装 Homebrew 和 iproute2mac,步骤多且非原生。对大多数用户来说,lsof 已足够完整、稳定、轻量。










