141 lines
3.0 KiB
Markdown
141 lines
3.0 KiB
Markdown
|
|
# 端口管理工具
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
|
|||
|
|
在开发过程中,经常遇到端口被占用的问题,特别是:
|
|||
|
|
- Next.js 开发服务器默认使用端口 3000
|
|||
|
|
- 后端服务使用端口 8000
|
|||
|
|
- 其他开发工具可能占用常用端口
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
我们提供了多种自动化工具来处理端口占用问题:
|
|||
|
|
|
|||
|
|
### 1. 快速端口清理
|
|||
|
|
|
|||
|
|
**单个端口清理:**
|
|||
|
|
```bash
|
|||
|
|
./scripts/kill_port_auto.sh 3000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**清理所有开发端口:**
|
|||
|
|
```bash
|
|||
|
|
./scripts/clear_dev_ports.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 智能启动脚本
|
|||
|
|
|
|||
|
|
**启动后端服务(自动处理端口冲突):**
|
|||
|
|
```bash
|
|||
|
|
./start_service.sh --dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**启动前端开发服务器(自动处理端口冲突):**
|
|||
|
|
```bash
|
|||
|
|
./scripts/start_web_dev.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Shell 函数和别名
|
|||
|
|
|
|||
|
|
将以下内容添加到你的 `~/.bashrc` 或 `~/.zshrc`:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 加载端口管理函数
|
|||
|
|
source /path/to/your/project/scripts/port_functions.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
然后你可以使用:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查端口使用情况
|
|||
|
|
checkport 3000
|
|||
|
|
|
|||
|
|
# 杀死特定端口的进程
|
|||
|
|
killport 3000
|
|||
|
|
|
|||
|
|
# 快速清理常用开发端口
|
|||
|
|
killdevports
|
|||
|
|
|
|||
|
|
# 便捷别名
|
|||
|
|
kp3000 # 杀死 3000 端口进程
|
|||
|
|
kp8000 # 杀死 8000 端口进程
|
|||
|
|
kp8002 # 杀死 8000 端口进程
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 工具说明
|
|||
|
|
|
|||
|
|
### kill_port.sh
|
|||
|
|
交互式端口清理工具,会显示进程信息并询问是否确认删除。
|
|||
|
|
|
|||
|
|
### kill_port_auto.sh
|
|||
|
|
自动端口清理工具,直接清理指定端口,无需确认。
|
|||
|
|
|
|||
|
|
### clear_dev_ports.sh
|
|||
|
|
批量清理常用开发端口(3000, 3001, 8000, 8001, 8000, 5000, 5001)。
|
|||
|
|
|
|||
|
|
### start_web_dev.sh
|
|||
|
|
智能前端启动脚本,自动处理端口冲突并启动 Next.js 开发服务器。
|
|||
|
|
|
|||
|
|
### port_functions.sh
|
|||
|
|
Shell 函数库,提供便捷的端口管理命令。
|
|||
|
|
|
|||
|
|
## 使用示例
|
|||
|
|
|
|||
|
|
### 场景1:Next.js 端口被占用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 方法1:使用自动清理脚本
|
|||
|
|
./scripts/kill_port_auto.sh 3000
|
|||
|
|
cd web && pnpm dev
|
|||
|
|
|
|||
|
|
# 方法2:使用智能启动脚本
|
|||
|
|
./scripts/start_web_dev.sh
|
|||
|
|
|
|||
|
|
# 方法3:使用 shell 函数(需要先加载)
|
|||
|
|
killport 3000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景2:批量清理开发环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 清理所有常用开发端口
|
|||
|
|
./scripts/clear_dev_ports.sh
|
|||
|
|
|
|||
|
|
# 或者使用 shell 函数
|
|||
|
|
killdevports
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景3:检查端口使用情况
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查特定端口
|
|||
|
|
ss -tulpn | grep :3000
|
|||
|
|
|
|||
|
|
# 或者使用我们的函数
|
|||
|
|
checkport 3000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **权限**:这些脚本会强制终止进程,请确保不会误杀重要进程
|
|||
|
|
2. **数据保存**:在清理端口前,请保存你的工作,因为进程会被强制终止
|
|||
|
|
3. **系统兼容性**:这些脚本在 Linux/WSL 环境中测试通过
|
|||
|
|
4. **安全性**:建议只在开发环境中使用这些工具
|
|||
|
|
|
|||
|
|
## 故障排除
|
|||
|
|
|
|||
|
|
### 端口仍然被占用
|
|||
|
|
如果端口清理后仍然显示被占用,可能是:
|
|||
|
|
1. 进程重启速度过快
|
|||
|
|
2. 有系统级服务占用端口
|
|||
|
|
3. 需要等待更长时间让系统释放端口
|
|||
|
|
|
|||
|
|
### 脚本权限问题
|
|||
|
|
确保脚本有执行权限:
|
|||
|
|
```bash
|
|||
|
|
chmod +x scripts/*.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 找不到进程信息
|
|||
|
|
某些系统可能需要 root 权限才能查看所有进程信息。
|