Windows查看端口占用命令大全:查看端口占用、找进程、关端口一步到位

Windows查看端口占用命令大全:查看端口占用、找进程、关端口一步到位

本文汇总 windows 系统下查看端口的实用命令,重点讲解netstat -ano查看所有端口占用、筛选特定端口(如 8080/3306)的方法,教你通过 PID 快速定位占用端口的进程。针对 “端口被占用”“服务启动失败” 等常见问题,提供taskkill强制终止进程的操作步骤,同时对比命令提示符powerShell 的端口查询差异。附带详细参数说明和实战案例,帮助你轻松排查网络故障、管理服务端口,新手也能快速上手。

一、查看所有端口占用情况

1. 使用 netstat 命令(最常用)

netstat -ano
  • 参数说明
    • -a:显示所有连接和监听端口
    • -n:以数字形式显示 IP 地址和端口号
    • -o:显示每个连接的进程 ID(PID)
  • 输出示例
    协议    本地地址          外部地址        状态           PID
    TCP    0.0.0.0:80        0.0.0.0:0      LISTENING      4
    TCP    127.0.0.1:5357    0.0.0.0:0      LISTENING      1008
    

2. 使用 netstat 筛选特定协议(TCP/UDP)

netstat -an | findstr "TCP"  # 仅显示TCP连接
netstat -an | findstr "UDP"  # 仅显示UDP连接

二、查看特定端口占用情况

1. 查找占用指定端口的进程

netstat -ano | findstr :8080  # 查找占用8080端口的进程

2. 使用 tasklist 关联 PID 查看进程名称

tasklist | findstr "1234"  # 替换1234为实际PID

3. 组合命令(一键查看端口对应的进程名称)

for /f "tokens=5" %a in ('netstat -ano ^| findstr :8080') do tasklist | findstr %a
  • 说明:此命令会先查找占用 8080 端口的 PID,再通过 PID 查找对应的进程名称。

三、使用 Get-NetTCPConnection(PowerShell 命令)

1. 查看所有 TCP 连接

powershell
Get-NetTCPConnection

2. 筛选特定端口

powershell
Get-NetTCPConnection | Where-Object LocalPort -eq 8080

3. 显示进程名称(需结合 Get-Process

powershell
Get-NetTCPConnection | Where-Object LocalPort -eq 8080 | ForEach-Object {
    $process = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
    [PSCustomObject]@{
        LocalAddress = $_.LocalAddress
        LocalPort    = $_.LocalPort
        State        = $_.State
        ProcessName  = if ($process) { $process.Name } else { "Unknown" }
    }
}

四、查看端口监听状态

1. 仅显示监听中的端口

netstat -ano | findstr LISTENING

2. 使用 netsh 命令(更详细的监听信息)

netsh interface ipv4 show excludedportrange protocol=tcp
  • 输出示例
    协议 tcp 端口排除范围
    
    开始端口    结束端口
    ----------    --------
        1025        1124
        5000        5050     # 系统保留端口
    

五、终止占用端口的进程

1. 通过 PID 终止进程(需管理员权限)

taskkill /F /PID 1234  # 替换1234为实际PID
  • 参数说明
    • /F:强制终止进程
    • /PID:指定进程 ID

2. 通过进程名称终止进程

taskkill /F /IM process_name.exe  # 替换process_name为实际进程名

六、其他实用命令

1. 查看网络统计信息

netstat -s  # 显示按协议统计的网络连接

2. 实时监控网络连接(类似 Linux 的 top

powershell
Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, State, @{Name="Process";Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} | Format-Table -AutoSize

3. 查看防火墙开放的端口

netsh advfirewall firewall show rule dir=in name=all | findstr "TCP" | findstr "已启用"

七、注意事项

  1. 管理员权限:部分命令(如终止进程)需要以管理员身份运行 PowerShell 或命令提示符
  2. 端口占用排查顺序
    • 先使用 netstat -ano | findstr :端口号 确定 PID
    • 再用 tasklist | findstr PID 查找进程名称
    • 最后决定是否终止进程
  3. 系统保留端口windows 会保留一些端口供系统服务使用(如 5000-5050),如需使用需修改系统配置。

 

通过以上命令,你可以全面掌握 Windows 系统中端口的使用情况,高效排查网络问题和管理服务。
阅读剩余