可使用netstat -ano查端口及pid,再用findstr筛选、tasklist查进程名,或通过资源监视器图形化查看,powershell中get-nettcpconnection命令亦可直接获取占用端口的进程信息。

如果您需要确认某个端口是否被占用,或想找出是哪个程序正在使用特定端口,则可能是由于该端口已被其他进程监听或建立连接。以下是解决此问题的步骤:
一、使用 netstat -ano 查看全部端口及对应进程ID
该命令可一次性列出系统中所有 TCP/UDP 连接、监听端口及其关联的进程标识符(PID),是识别端口占用的基础手段,无需安装第三方工具,适用于所有标准 Win10 系统环境。
1、同时按下 Win + R 组合键,打开“运行”对话框。
2、输入 cmd 并按回车键,启动命令提示符窗口。
3、在命令提示符中输入命令:netstat -ano,然后按回车执行。
4、观察输出结果中的“本地地址”列(如 0.0.0.0:8080 或 [::]:3306),冒号后为端口号;“状态”列为 LISTENING 表示该端口正被监听;最右侧“PID”列显示对应进程的唯一数字标识。
二、用 findstr 精准筛选指定端口的占用记录
当已知目标端口号(例如 80、3306、8080)时,该方法可跳过人工浏览大量输出,直接定位匹配行,显著提升排查效率,尤其适用于多服务共存场景。
1、在已打开的命令提示符中,输入命令:netstat -ano | findstr ":8080"(将 8080 替换为实际需查询的端口号,保留冒号以确保精准匹配端口字段)。
2、若无返回结果,尝试去掉冒号再执行:netstat -ano | findstr "8080"(部分 Windows 版本对格式敏感)。
3、成功匹配后,从输出行末尾提取 PID 数值(例如 12345),该数值即为占用该端口的进程ID。
三、通过 tasklist 查询 PID 对应的进程名称
获得 PID 后,必须将其映射到具体可执行文件名,才能判断该进程是否为预期服务(如 nginx.exe)、开发程序(如 java.exe)或异常进程,这是后续操作的前提。
1、在命令提示符中输入命令:tasklist | findstr "12345"(将 12345 替换为上一步查得的实际 PID,须加英文双引号)。
2、执行后返回结果的第一列为“映像名称”,即占用端口的程序名(如 chrome.exe、svchost.exe、node.exe)。
3、若输出为空,说明该 PID 进程已退出但端口状态尚未刷新,可等待数秒后重试,或再次执行 netstat -ano 验证。
四、使用资源监视器图形化查看监听端口
资源监视器提供免命令、全字段可视化的界面,直接展示协议类型、完整进程路径、用户账户及网络吞吐量,适合不熟悉命令行或需交叉验证的用户快速确认端口归属。
1、同时按下 Win + R 键,输入 resmon 并按回车,启动资源监视器。
2、在资源监视器窗口中,点击顶部的 网络 选项卡。
3、向下滚动至 监听端口(Listening Ports) 区域,此处按端口号排序列出所有处于 LISTEN 状态的端口。
4、每行包含端口、协议、进程名称、PID 和完整路径等信息,可直接定位占用程序。
五、使用 PowerShell 直接获取端口所属进程信息
PowerShell 提供了更现代的网络管理 cmdlet,Get-NetTCPConnection 可绕过 PID 中转,直接根据本地端口查询拥有该端口的进程ID,并进一步获取完整进程对象,操作步骤更少且结果更精确。
1、右键点击“开始”按钮,选择 Windows PowerShell(管理员) 或 终端(管理员) 以提升权限运行。
2、在 PowerShell 窗口中输入命令:Get-NetTCPConnection -LocalPort 8080 | Select-Object -ExpandProperty OwningProcess(将 8080 替换为目标端口号)。
3、该命令输出占用端口的 PID(例如 12345);接着输入:Get-Process -Id 12345,返回结果中的 ProcessName 字段即为占用端口的程序名称。










