文章目录
- 👉 作者:辣椒 📌 个人网站|项目资源|技术分享 👉 点击访问 [https://qiyex.com](https://qiyex.com)
- 背景
- 操作步骤
- 一、打开命令提示符(Command Prompt)
- 二、查看占用端口的进程
- 三、kill 杀死占用端口的进程
- 完整操作流程示例
- 常见问题
- 命令速查表
- 附:Linux / macOS 下的做法
- 总结
👉 作者:辣椒
📌 个人网站|项目资源|技术分享
👉 点击访问https://qiyex.com
背景
在 Windows 上启动本地服务(Tomcat、Node、Python 后端、Maven 项目等)时,经常会遇到"端口已被占用"(Address already in use/Port 8080 was already in use)的报错。原因通常是上一次运行的程序没有完全退出,或者其它软件抢先占用了该端口。
解决的思路只有三步:查出是谁占了端口 → 拿到它的 PID → 干掉这个进程。
操作步骤
一、打开命令提示符(Command Prompt)
按下快捷键Win+R,弹出"运行"窗口,输入cmd,回车,即可打开命令提示符窗口。
如果当前账号权限不足、后续
taskkill提示"拒绝访问",可以改用管理员身份运行:在开始菜单搜索cmd,右键选择"以管理员身份运行"。
二、查看占用端口的进程
命令语法:
netstat-ano|findstr 端口号参数含义:
| 参数 | 作用 |
|---|---|
-a | 显示所有连接和监听端口 |
-n | 以数字形式显示地址和端口(不做域名解析,速度更快) |
-o | 显示每个连接对应的进程 PID |
findstr | Windows 下的文本过滤命令,用于筛选出目标端口所在的行 |
示例:查看 8088 端口的占用情况
netstat-ano|findstr 8088输出结果类似:
TCP 0.0.0.0:8088 0.0.0.0:0 LISTENING 8812 TCP [::]:8088 [::]:0 LISTENING 8812各列从左到右依次为:协议、本地地址、外部地址、连接状态、PID。最右侧一列的数字(示例中为8812)就是占用该端口的进程号,记下它。
也可以加上LISTENING只筛选处于监听状态的记录,避免输出过多:
netstat-ano|findstr 8088|findstr LISTENING补充:如果已知进程名想反查端口,可以用
tasklist | findstr 进程名查看该进程的 PID。
三、kill 杀死占用端口的进程
拿到 PID 后,用taskkill结束它。
普通结束(语法):
taskkill/pid 进程PID示例:
taskkill/pid 8812如果要连带结束该进程启动的子进程,加上/T:
taskkill/T/pid 8812强制结束(语法):
taskkill/F/PID 进程PID示例:
taskkill/F/PID 8812参数含义:
| 参数 | 作用 |
|---|---|
/pid | 指定要结束的进程 PID |
/F | 强制结束(Force),适用于普通方式杀不掉的情况 |
/T | 同时结束该进程及其启动的子进程 |
执行成功后会出现提示:
成功: 已终止 PID 为 8812 的进程。此时再执行一次netstat -ano | findstr 8088,如果没有输出,说明端口已经被释放。
完整操作流程示例
假设启动服务时报错Port 8088 was already in use:
# 1. 查询 8088 端口被谁占用netstat-ano|findstr 8088# 输出末列 PID:8812# 2. 结束该进程taskkill/F/PID 8812# 3. 验证端口是否已释放(无输出即成功)netstat-ano|findstr 8088常见问题
1. 提示"拒绝访问"或"无法终止进程"
说明该进程权限较高(如系统服务)。请以管理员身份重新打开 cmd,再执行taskkill。
2. 只想通过进程名杀掉,不想查 PID
可以直接按映像名称匹配:
taskkill/F/IM java.exe其中/IM后面跟进程的映像名称(可用tasklist查看完整名称)。
3. 是系统进程(如 PID 4、svchost.exe)占用端口怎么办
不要盲目强杀,可能导致系统异常。应先确认是哪个服务在监听:netstat -abno | findstr 端口号会显示进程名,或在"任务管理器 → 详细信息"中根据 PID 定位,再决定是停服务还是换端口。
4. 端口占用反复出现
通常是某个服务被设置为开机自启或自动重启。可以在"服务"(services.msc)里找到对应服务,改为手动启动,或直接更换项目的监听端口。
命令速查表
| 场景 | 命令 |
|---|---|
| 查询端口占用及 PID | netstat -ano | findstr 端口号 |
| 仅看监听状态 | netstat -ano | findstr 端口号 | findstr LISTENING |
| 按 PID 结束进程 | taskkill /pid PID |
| 强制结束进程 | taskkill /F /PID PID |
| 结束进程及其子进程 | taskkill /T /PID PID |
| 按进程名结束 | taskkill /F /IM 进程名.exe |
| 查看进程列表 | tasklist | findstr 进程名 |
附:Linux / macOS 下的做法
如果你在 Linux 或 macOS 上遇到同样的问题,对应的命令如下:
# 查看占用端口的进程lsof-i:8088# 或netstat-tunlp|grep8088# 结束该进程kill-9<PID># 或一步到位kill-9$(lsof-t-i:8088)总结
@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!
个人网站:https://qiyex.com
我在 gon zhon hao「辣椒微创」有更详细的案例和工具,你应该用得上!
🚀 【创业项目】:副业灵感、轻资产玩法、互联网创收思路
📦 【资源分享】:PPT、音效、模板、字体、插件等创作者工具合集
🔧 【软件下载】:精选高效、靠谱的生产力工具及安装指南
💻 【编程开发】:编程学习资源、项目源码、开发工具、实战案例
🛒 【薅羊毛】:精选各种优惠折扣、平台补贴信息,帮你省钱放大收益。