|
问题提示:Ports不可用等。
导致问题:在日常工作中,经常会碰到启动某个应用时,提示xxx端口已经并占用,导致当前应用无法正常启动。
解决思路:找到占用特定端口的应用并将其释放。具体步骤如下:
2.1 cmd下查找占用端口进程号 //这里以 80 端口为例
输入 netstat -ano | findstr 80 回车
![Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践 Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpZNU1TODNNR0UxTXpRMk16a3lORGM0TXpObE5HVXlZek14WXpRNU9ETXpPR1F4WWk1d2JtYz0=)
由上可知:
80端口被PID=9900 的程序/服务占用
2.2 查找PID=9900的应用/服务
输入 tasklist | findstr 9900
![Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践 Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpRMk1DODVOemxoT1dNNE5UTTBZek16TURBd01tSTJPVFl6TldWaFpHVTFORFkwTkM1d2JtYz0=)
由上可知:
进程号为9900属于httpd.exe 即 apache服务所有, 也即apache占用80端口
如果为其他应用占用80端口,需要释放, 步骤见 2.3
2.3 释放目标端口
即: 停止占用端口的服务/应用
方式有两个:
方式一:命令行杀死进程 //只是针对单一进程,没有子进程而言, 有时候未必生效,![Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践 Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpNNE5pODVNVE14T1RNd1pEWm1OR0U1TW1RMU1XSTROekJoTURjd01EWTRNbVZqTWk1d2JtYz0=)
方式二:
通过任务管理器
找到目标进程号所在的应用, 选中, 点击结束任务即可
![Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践 Windows 端口占用查看/释放 [包含80端口占用与释放] - 学习/实践](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpJMUx6bGlOakU1WVRSaU9UZzRNV001TmpneE5HWXpNalkwT0RFeFpqY3dNalU1TG5CdVp3PT0=)
进行确认即可.
这里只是apache具有自我重启机制,所以会另启动进程重新占据80端口, 占据80端口是配置文件定义的,可以修改.
到这里已经问题已经基本解决。
但是:
总有幺蛾子出现,在帮同事使用docker搭建本地环境,有提示80端口不可用
查看之后发现是一个PID=4的进程在监听, 查看PID=4的应用/服务,
发现是系统服务,任务管理器中,该服务的描述为 NT kernel & System
本来以为正常释放端口即可,发现该服务根本无法结束,端口始终无法释放.
搜索一圈之后,找到相同问题提及提供解决方案的帖子,如下:
https://www.cnblogs.com/xiohao/p/4282288.html //80端口被NT kernel & System 占用pid 4
原因:该进程是Http.sys。它是http API的驱动组件,Http栈服务器。如果该端口被Http.sys占用,说明一些正在使用http.sys的应用程序在运行。这就是阻止Apache运行的原因,因为Http.sys占用着80端口。
解决办法:
1.cmd 管理员权限运行 netsh http show servicestat 查看信息
2.net stop http //停止http服务 按y确定
3.Sc config http start= disabled //停止其启动
然后启动Apache或者docker容器,可以正常启动,不再报端口不可用错误
最火查看一下 netstat -ano
发现pid 4占用了其他端口 , 如445端口。
|