Windows 系统查看端口占用情况并强制结束进程
Windows 系统查看端口占用情况并强制结束进程 在开发或运维过程中,我们经常遇到程序启动失败的情况,报错提示“端口已被占用”(Address alrea
Windows 系统查看端口占用情况并强制结束进程
在开发或运维过程中,我们经常遇到程序启动失败的情况,报错提示“端口已被占用”(Address already in use)。本文将详细介绍如何在 Windows 系统下通过 CMD 命令查看端口占用情况,定位占用进程,并强制结束该进程。
文章目录
Windows 系统查看端口占用情况并强制结束进程前言步骤一:查找占用特定端口的进程 (PID)步骤二:根据 PID 查询进程名称(可选)步骤三:强制结束进程方法 1:使用 CMD 命令强制终止(推荐)方法 2:使用任务管理器(图形化界面)
总结参考资料
前言
作为开发者,你一定遇到过这种情况:准备启动 Tomcat、Nginx 或 Spring Boot 项目时,控制台突然报错:
java.net.BindException: Address already in use: bind
这意味着你要使用的端口(例如 8080)已经被其他程序占用了。本文将教你通过 3 个简单的步骤解决这个问题。
步骤一:查找占用特定端口的进程 (PID)
首先,我们需要找到是哪个进程 ID (PID) 占用了我们需要的端口。
打开命令提示符:按 Win + R,输入 cmd 或者 powershell,然后回车(建议以管理员身份运行)。
注:关于 CMD 和 PowerShell 的基本使用方法,可以参考我的这一篇文章中的介绍: CMD与PowerShell:Windows命令行工具的对比与使用指南
输入查询命令: 使用 netstat 命令配合 findstr 来筛选特定端口。
语法:
netstat -ano | findstr "端口号"
示例(查找 8080 端口):
netstat -ano | findstr "8080"
输出结果解析:
控制台会输出类似 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 5660 的信息。重点关注最后一列的数字,这个数字就是 PID (进程ID)。
(base) PS C:\WINDOWS\system32> netstat -ano | findstr "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 5660
TCP [::]:8080 [::]:0 LISTENING 5660
参数详解:
-a: 显示所有连接和侦听端口。-n: 以数字形式显示地址和端口号。-o: 显示拥有的进程 ID。
这里命令行输出显示的 PID 是 5660。
步骤二:根据 PID 查询进程名称(可选)
虽然我们可以直接根据 PID 杀进程,但为了安全起见,最好先确认一下这个 PID 到底对应哪个软件,以免误杀系统进程。
语法:
tasklist | findstr "PID"
示例(查找 PID 为 5660 的进程):
tasklist | findstr "5660"
输出结果: 你可能会看到 javaw.exe、nginx.exe 或者 python.exe 等名称。确认是无关进程后,即可执行下一步。
(base) PS C:\WINDOWS\system32> netstat -ano | findstr "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 5660
TCP [::]:8080 [::]:0 LISTENING 5660
(base) PS C:\WINDOWS\system32> tasklist | findstr "5660"
GeoServer.exe 5660 Services 0 586,800 K
从命令行输出中可以发现,占用我的 8080 端口的 5660 进程原来是 GeoServer 。
验证一下:双击 GeoServer Web Portal ,打开了 http://localhost:8080/geoserver/web/?0,发现我的 Geoserver 果然在运行: (注:这只是我的计算机上目前 8080 端口的占用情况,某些 Web 服务器、Python 进程等都会占用端口,请根据你的计算机上的实际情况确认。)
步骤三:强制结束进程
如果确实必须使用这个端口,需要关闭占用端口的进程,并且该进程关闭后不会对现在的任务造成影响,我们有下列两种方式结束这个占用端口的进程。
方法 1:使用 CMD 命令强制终止(推荐)
使用 taskkill 命令可以快速结束进程。
语法:
taskkill /f /t /im "进程名称"
// 或者
taskkill /f /pid "PID"
示例(通过 PID 结束):
taskkill /f /pid 1234
参数详解:
/f: 强制终止进程 (Force)。/t: 终止指定的进程及其启动的所有子进程 (Tree)。/im: 指定要终止的进程的映像名称 (Image Name)。/pid: 指定要终止的进程的 PID。
方法 2:使用任务管理器(图形化界面)
如果你不习惯用命令行,也可以通过图形界面操作:
按 Ctrl + Shift + Esc 打开任务管理器。切换到 “详细信息” (Details) 选项卡。点击表头的 “PID” 进行排序,找到 1234。右键点击该进程,选择 “结束任务”。
总结
解决端口占用问题的“三板斧”:
netstat -ano | findstr "端口号" (找 PID)tasklist | findstr "PID" (确认程序,可跳过)taskkill /f /pid "PID" (杀进程)
掌握这几条命令,以后再遇到端口冲突就能快速解决了。
参考资料
Windows下如何查看某个端口被谁占用