LarsenCundric/port-whisperer
GitHub: LarsenCundric/port-whisperer
一款美观的命令行工具,用于查看本地端口占用情况,支持框架检测、Docker 识别和交互式进程管理。
Stars: 272 | Forks: 17
# port-whisperer
**一个精美的 CLI 工具,用于查看端口上正在运行的内容。**
不再猜测哪个进程占用了 3000 端口。`port-whisperer` 为你提供一个彩色表格,列出机器上监听的每个开发服务器、数据库和后台进程——具备框架检测、Docker 容器识别和交互式进程管理功能。
## 效果预览
```
$ ports
┌─────────────────────────────────────┐
│ Port Whisperer │
│ listening to your ports... │
└─────────────────────────────────────┘
┌───────┬─────────┬───────┬──────────────────────┬────────────┬────────┬───────────┐
│ PORT │ PROCESS │ PID │ PROJECT │ FRAMEWORK │ UPTIME │ STATUS │
├───────┼─────────┼───────┼──────────────────────┼────────────┼────────┼───────────┤
│ :3000 │ node │ 42872 │ frontend │ Next.js │ 1d 9h │ ● healthy │
├───────┼─────────┼───────┼──────────────────────┼────────────┼────────┼───────────┤
│ :3001 │ node │ 95380 │ preview-app │ Next.js │ 2h 40m │ ● healthy │
├───────┼─────────┼───────┼──────────────────────┼────────────┼────────┼───────────┤
│ :4566 │ docker │ 58351 │ backend-localstack-1 │ LocalStack │ 10d 3h │ ● healthy │
├───────┼─────────┼───────┼──────────────────────┼────────────┼────────┼───────────┤
│ :5432 │ docker │ 58351 │ backend-postgres-1 │ PostgreSQL │ 10d 3h │ ● healthy │
├───────┼─────────┼───────┼──────────────────────┼────────────┼────────┼───────────┤
│ :6379 │ docker │ 58351 │ backend-redis-1 │ Redis │ 10d 3h │ ● healthy │
└───────┴─────────┴───────┴──────────────────────┴────────────┴────────┴───────────┘
5 ports active · Run ports for details · --all to show everything
```
颜色含义:绿色 = 正常,黄色 = 孤立,红色 = 僵尸。
## 安装
```
npm install -g port-whisperer
```
或者直接运行,无需安装:
```
npx port-whisperer
```
### 或者让 Claude Code 为你安装
如果你使用 [Claude Code](https://claude.ai/code),可以要求它执行 `npm install -g port-whisperer` 并立即开始使用 `ports`——无需设置步骤。
## 使用方法
### 显示开发服务器端口
```
ports
```
显示开发服务器、Docker 容器和数据库。系统应用(Spotify、Raycast 等)默认会被过滤掉。
### 显示所有监听端口
```
ports --all
```
包括系统服务、桌面应用程序以及机器上监听的所有其他内容。
### 检查特定端口
```
ports 3000
# 或
whoisonport 3000
```
详细视图:完整的进程树、仓库路径、当前 git 分支、内存使用情况,以及一个用于终止进程的交互式提示。
### 显示所有开发进程
```
ports ps
```
面向开发者的精美 `ps aux`。显示所有正在运行的开发进程(不仅限于绑定端口的进程),包含 CPU%、内存、框架检测和智能描述列。Docker 进程折叠为单行摘要。
```
$ ports ps
┌───────┬─────────┬──────┬──────────┬──────────┬───────────┬─────────┬────────────────────────────────┐
│ PID │ PROCESS │ CPU% │ MEM │ PROJECT │ FRAMEWORK │ UPTIME │ WHAT │
├───────┼─────────┼──────┼──────────┼──────────┼───────────┼─────────┼────────────────────────────────┤
│ 592 │ Docker │ 1.3 │ 735.5 MB │ — │ Docker │ 13d 12h │ 14 processes │
├───────┼─────────┼──────┼──────────┼──────────┼───────────┼─────────┼────────────────────────────────┤
│ 36664 │ python3 │ 0.2 │ 17.6 MB │ — │ Python │ 6d 10h │ browser_use.skill_cli.daemon │
├───────┼─────────┼──────┼──────────┼──────────┼───────────┼─────────┼────────────────────────────────┤
│ 26408 │ node │ 0.1 │ 9.2 MB │ — │ Node.js │ 10d 13h │ jest jest_runner_cloud.js │
├───────┼─────────┼──────┼──────────┼──────────┼───────────┼─────────┼────────────────────────────────┤
│ 25752 │ node │ 0.0 │ 17.3 MB │ — │ Node.js │ 10d 13h │ server.js │
├───────┼─────────┼──────┼──────────┼──────────┼───────────┼─────────┼────────────────────────────────┤
│ 66921 │ Python │ 0.0 │ 4.1 MB │ — │ Python │ 2h 25m │ src.server │
└───────┴─────────┴──────┴──────────┴──────────┴───────────┴─────────┴────────────────────────────────┘
5 processes · --all to show everything
```
```
ports ps --all # show all processes, not just dev
```
### 清理孤立进程
```
ports clean
```
查找并终止孤立或僵尸开发服务器进程。仅针对开发运行时(node、python 等)——不会触及你的桌面应用。
### 监控端口变化
```
ports watch
```
实时监控,每当有端口开始或停止监听时都会通知你。
## 工作原理
三次 shell 调用,运行时间约 0.2 秒:
1. **`lsof -iTCP -sTCP:LISTEN`** -- 查找所有监听 TCP 端口的进程
2. **`ps`**(单次批量调用)-- 一次性检索所有 PID 的进程详情:命令行、运行时间、内存、父 PID、状态
3. **`lsof -d cwd`**(单次批量调用)-- 解析每个进程的工作目录以检测项目和框架
对于 Docker 端口,单次 `docker ps` 调用将主机端口映射到容器名称和镜像。
框架检测通过读取 `package.json` 依赖项并检查进程命令行。可识别 Next.js、Vite、Express、Angular、Remix、Astro、Django、Rails、FastAPI 等。Docker 镜像可识别为 PostgreSQL、Redis、MongoDB、LocalStack、nginx 等。
## 平台支持
| 平台 | 状态 |
|--------|--------|
| macOS | 已支持 |
| Linux | 计划中 |
| Windows | 无计划 |
## 许可证
[MIT](LICENSE)
标签:Awesome, CLI, Docker识别, GNU通用公共许可证, MITM代理, Mutation, Node.js, PID查找, WiFi技术, WSL, 可视化, 开发运维, 性能分析, 情报分析, 数据统计, 文档结构分析, 框架检测, 端口占用, 端口扫描, 端口监控, 系统工具, 系统管理, 网络工具, 网络诊断, 自定义脚本, 请求拦截, 进程查看