Appearance
Clash 7890 端口被占用 (Address In Use) 秒级排查与修复 2026
直接结论:遇到 Clash 核心启动日志提示 bind: address already in use :7890 或 listen tcp 127.0.0.1:7890: bind: permission denied / address in use 时,95% 的原因在于:旧版 Clash 崩溃后残留的僵尸内核进程未退出,或是本地运行了其他代理/调试工具(如 v2rayN、Fiddler、Charles)。最立竿见影的解决对策是:在终端用一条命令精准定位并强制结束霸占端口的进程,或直接在客户端将混合端口改为 7899。
一、端口冲突典型触发场景与决策排查树
mermaid
flowchart TD
PortErr["启动报 7890 端口被占用"] --> CheckPort{"谁在占用 7890 端口?"}
CheckPort -->|残留的 clash-core/mihomo| KillGhost["执行 Stop-Process 杀灭僵尸进程"]
CheckPort -->|其他代理工具 (v2rayN/NekoBox)| CloseConflict["退出竞态代理软件并重试"]
CheckPort -->|未知系统服务或无权限结束| ChangePort["修改 Clash 混合端口为 7899"]
KillGhost --> RestartClash["重启 Clash Verge 恢复正常"]
CloseConflict --> RestartClash
ChangePort --> RestartClash二、Windows 平台:两步精准杀灭占用进程
在 Windows 10/11 环境下,最常见的情况是客户端主界面虽然关闭,但后台的 clash-verge-service.exe 或 mihomo.exe 仍然存活并持有套接字(Socket)。
步骤 1:查找占用端口的 PID
以管理员身份打开 PowerShell,执行以下命令:
powershell
# 查找本地监听 7890 端口的连接与对应进程 PID
Get-NetTCPConnection -LocalPort 7890 -ErrorAction SilentlyContinue | Select-Object LocalAddress, LocalPort, State, OwningProcess如果习惯使用传统 CMD 命令行:
cmd
netstat -ano | findstr ":7890"终端将输出类似如下行:
TCP 127.0.0.1:7890 0.0.0.0:0 LISTENING 14892最后一列的数字 14892 即为持有端口的进程 ID(PID)。
步骤 2:识别进程名称并强制结束
确认占用者身份并执行强杀:
powershell
# 1. 确认该 PID 到底是什么软件
Get-Process -Id 14892 | Select-Object ProcessName, Path
# 2. 强制杀灭该进程
Stop-Process -Id 14892 -Force若在 CMD 中操作:
cmd
taskkill /F /PID 14892结束后重新在 Clash Verge 界面点击「启动内核」或重启客户端,端口监听即可顺利恢复。
三、macOS 与 Linux 平台:终端一行流排查
在 macOS 或各类 Linux 终端下,操作更为便捷:
bash
# 1. 使用 lsof 查看端口占用情况
lsof -i :7890
# 预期输出示例:
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# mihomo 23841 root 7u IPv4 78239 0t0 TCP *:7890 (LISTEN)
# 2. 一行流强制结束占用 7890 端口的进程
sudo kill -9 $(lsof -t -i:7890)若在某些精简版 Linux 环境中未预装 lsof,可改用 ss 命令定位:
bash
sudo ss -tulpn | grep :7890四、一劳永逸对策:直接在客户端修改监听端口
如果您电脑上运行着特定的开发环境或企业 VPN 软件,必须长期固定占用 7890 端口,最稳妥的策略是将 Clash 的混合代理端口修改为一个冷门端口(如 7899 或 10808):
1. 在图形界面修改
- 打开 Clash Verge Rev 或 Clash Verge 设置页面;
- 找到「基础设置 / General」中的「混合代理端口 (Mixed Port)」;
- 将数值从
7890更改为7899; - 点击保存并重启内核。
2. 在配置文件 config.yaml 中修改
直接编辑配置文件顶部字段:
yaml
# 修改混合代理端口为 7899
mixed-port: 7899
port: 0
socks-port: 0保存后,客户端的系统代理服务会自动将 Windows 注册表中的代理指向更新为 127.0.0.1:7899,从此彻底告别端口冲突。
五、相关故障排查指南
- 启动崩溃与白屏排查:Clash 启动失败与闪退修复手册
- 端口监听与局域网共享:Clash 端口设置与局域网共享指南
- 无法联网全面诊断:Clash 无法上网 5 步排障