Windows下9001端口被占用
问题复现
IDEA运行微服务的网关模块,突然报了一个端口被占用的异常,如下图所示:
本来没太在意,因为以前80或8080端口被占用也遇到过,不就是杀进程吗,于是我满怀信心的打卡cmd,键入熟悉的指令
netstata -ano | findstr 9001
taskkill /f -pid ${pid}
结果大跌眼镜,无法终止这个PID。再一看进程号小于1000,看样子是个系统进程,于是打开任务管理器
9001端口莫名被占用,而且这个System进程还没有办法结束,这就只能慢慢排查是什么鬼东西占用了。
netsh查PID
首先要明确的是,9001端口被System占用,必然和HTTP服务有关系。所以继续打开cmd界面,输入:
netsh http show servicestat
看到这个IGCC就知道罪魁祸首了,接下来就盘他了,刚刚输入netsh指令的结尾,有一个请求队列的输出,他的顺序和前面服务器会话是对应的。从前面两图可知,9001端口对应的次序是2,所以在请求队列查找顺序为2的,然后找到该队列进程ID,是5148。
taskmgr查服务
![image-20210819155254748](https://img-blog.csdnimg.cn/img_convert/aa4b2d731908cdbfe245552c1cd6da94.png
然后继续任务管理器,(ctrl + shift + delete)或(win + r + taskmgr):
根据ID查看,被占用的进程是OneAPP.IGCC。恩,没错,就是他了。
services.msc自动改手动
接下来只需要去service.msc里停止它并设置为手动即可。
当然也可以在刚刚的任务管理器,点击5148进程的服务,右键-转到服务-打开服务,也是一样的效果。
由于servie.msc我并没有找到类似搜索的功能,所以只能手动搜,当然也有技巧,就是利用排序,只看正在运行和启动方式是自动的,最后定位到是Intel开头,想想也合理。
检查
最后查看下9001端口的占用情况,cmd键入
netstat -ano | findstr 9001
没有输出则表示无占用,恭喜。