背景
日常开发中经常遇到端口被占用的问题,比如启动某个服务时提示 EADDRINUSE。传统做法是手动三步走:
- 找到占用端口的进程 PID
- 结束该进程
- 重新启动服务
kport 将这三步合并成一条命令。
使用方法
kport 3000
也可以带参数名:
kport -Port 3000
输出示例:
Killed PID 12345 on port 3000
如果没有进程占用该端口,输出:
No process found on port 3000
安装步骤
1. 打开 PowerShell 配置文件
PowerShell 配置文件是一个脚本,每次启动 PowerShell 时都会自动执行。将自定义 function 放在这里,就可以随时使用。
首先检查配置文件是否存在:
Test-Path $PROFILE
如果返回 False,需要先创建:
New-Item -Path $PROFILE -ItemType File -Force
然后用 VS Code 打开(或其他编辑器):
code $PROFILE
2. 添加脚本
将以下代码粘贴到配置文件中,保存:
function kport {
param([int]$Port)
$proc = Get-NetTCPConnection -LocalPort $Port -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess
if ($proc) {
Stop-Process -Id $proc -Force
Write-Host "Killed PID $proc on port $Port"
} else {
Write-Host "No process found on port $Port"
}
}
3. 生效配置
重新加载配置文件,使新 function 立即可用:
. $PROFILE
或者直接重启 PowerShell 窗口。
脚本原理解析
Get-NetTCPConnection -LocalPort $Port:查询本地指定端口的 TCP 连接信息Select-Object -ExpandProperty OwningProcess:提取 owning process 的 PIDStop-Process -Id $proc -Force:强制终止进程,-Force绕过确认提示-ErrorAction SilentlyContinue:静默处理未找到端口的情况,避免报错
适用场景
- 开发时频繁遇到端口占用需要手动释放
- Docker 容器端口与本地端口冲突
- 测试环境清理残留进程
平时手动 netstat + taskkill 的操作,有了 kport 一步到位。