Windows查看端口占用并找到进程
部署或维护服务时,需要知道“8443端口是谁在使用”“程序是否真的监听”,应先把端口、PID和进程对应起来,再决定改配置。本文操作均以只读查看为主,不直接结束未知进程。服务器上存在监听,也不能证明公网用户一定能访问。
先明确查询对象
| 信息 | 示例与含义 |
|---|---|
| 协议 | TCP与UDP要分开查,UDP没有TCP式的Listen/Established状态。 |
| 本地端口 | 应用在服务器上监听的端口,例如8443。 |
| 本地地址 | 127.0.0.1只供本机,0.0.0.0表示所有IPv4地址;IPv6监听还需结合系统和应用配置判断。 |
| PID | 当前进程编号;进程退出或重启后可能变化。 |
查TCP监听及所属PID
在服务器PowerShell执行以下命令,8443换成实际业务端口。Get-NetTCPConnection无匹配对象时,检查当前时刻是否确有程序监听,不要只依据程序图标是否存在。
Get-NetTCPConnection -State Listen -LocalPort 8443 | Select-Object LocalAddress,LocalPort,State,OwningProcess
记下OwningProcess,例如结果为1234,再查对应程序。1234仅为示例,必须换成刚查询到的实际PID。
Get-Process -Id 1234 | Select-Object Id,ProcessName,Path
部分进程路径需要管理员权限才能读取。若进程已经退出,重新查询端口和PID,不使用旧结果直接处理新进程。
使用netstat与任务管理器交叉查看
netstat -ano -p tcp
netstat -ano -p udp
TCP结果中看Local Address的端口、State和最后一列PID,不能把Foreign Address的远端端口误当成本机监听。UDP结果没有TCP状态列。打开任务管理器的“详细信息”,显示PID列并找到相同编号;系统服务可能共用宿主进程,需要继续看“服务”选项卡,而不是看到svchost.exe就结束它。
查到结果后怎样行动
| 结果 | 处理方向 |
|---|---|
| 没有目标端口监听 | 检查程序配置、启动参数与应用日志,先让服务正确启动。 |
| 只监听127.0.0.1 | 确认是否本来就应由反向代理提供外部访问;需要公网直连时再按应用文档调整绑定。 |
| 端口被另一个已识别程序占用 | 核对两者业务用途,安排修改其中一个端口;不要直接taskkill。 |
| 监听正确,但外部测试失败 | 继续检查产品侧访问控制、系统防火墙和来源路径。 |
保存最小而够用的证据
记录查询时间、协议、本地地址和端口、PID、程序名及对应应用日志。公开截图前遮挡客户连接地址和业务路径。若需要结束或重启服务,先确认它不承担RDP、网络、安全或数据库等关键功能,并保存工作及回退办法;本文的查看步骤不要求重启服务器。