我遇见的问题较多,前面是处理过程,后面是解决方案
昨天电脑自动关机了,而nginx并没有关机。
早上我输入停止nginx命令,报错
D:\tools\nginx-1.8.0>nginx -s stop nginx: [error] OpenEvent("Global\ngx_stop_20448") failed (2: The system cannot find the file specified)
系统找不到指定的文件,那我就启动nginx
D:\tools\nginx-1.8.0>nginx.exe nginx: [emerg] bind() to 0.0.0.0:9001 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
试图以其访问权限禁止的方式访问套接字,有人说这个是9001端口被占用了
尝试杀死PID 9001端口
D:\tools\nginx-1.8.0>taskkill /f /pid 9001 错误: 没有找到进程 "9001"。
提示没有这个进程,意思是9001端口没有被占用
任务管理器PID中没有9001
查看机器端口占用情况
D:\tools\nginx-1.8.0>netstat -ano
活动连接
协议 本地地址 外部地址 状态 PID
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING 12916
.........
TCP 0.0.0.0:9001 0.0.0.0:0 LISTENING 4
.........
提示PID为4
查看指定端口情况
D:\tools\nginx-1.8.0>netstat -ano | findstr "9001" TCP 0.0.0.0:9001 0.0.0.0:0 LISTENING 4 TCP [::]:9001 [::]:0 LISTENING 4
C:\Users\oor>netstat -ano | findstr 0.0.0.0:9001 TCP 0.0.0.0:9001 0.0.0.0:0 LISTENING 4
提示TCP端口为9001
尝试杀死TCP 9001端口
D:\tools\nginx-1.8.0>sudo fuser -k 9001/tcp 'sudo' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
都不对,到此有点糊涂了,所以换一种方式
使用netsh命令查看下现用的http端口配置
查看HTTP 服务状态快照(服务器会话视图):
D:\tools\nginx-1.8.0>netsh http show servicestate
HTTP 服务状态快照(服务器会话视图):
-----------------------------------------------------
服务器会话 ID: FF00000120000001
版本: 2.0
状态: Active
属性:
最大带宽: 4294967295
超时:
实体正文超时(秒): 120
耗尽实体正文超时(秒): 120
请求队列超时(秒): 120
空闲连接超时(秒): 120
标头等待超时(秒): 120
最小发送速率(字节/秒): 150
URL 组:
URL 组 ID: FE00000140000001
状态: Active
请求队列名称: 请求队列尚未命名。
属性:
最大带宽: 已继承
最大连接数: 已继承
超时:
继承的超时值
已注册的 URL 数目: 1
已注册的 URL 数目:
HTTP://+:9001/IGCC/SERVICE/
请求队列:
请求队列名称: 请求队列尚未命名。
版本: 2.0
状态: Active
请求队列 503 详细级别: 基本
最大请求数目: 1000
附加活动进程数目: 1
进程 ID:
4908
果真找到了PID:4908
看到上图的结果,恍然大悟!如果大家不确定那是一个什么进程,我们对它右键 - 打开文件所在位置
最后去任务管理器结束任务
查看当前 9001 端口占用情况
D:\tools\nginx-1.8.0>netstat -ano | findstr 0.0.0.0:9001 D:\tools\nginx-1.8.0>
启动nginx 成功了
再次重启电脑 启动nginx 失败了
D:\tools\nginx-1.8.0>nginx.exe nginx: [emerg] bind() to 0.0.0.0:9001 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
使用netsh命令查看下现用的http端口配置
C:\Users\oor>netsh http show servicestate HTTP 服务状态快照(服务器会话视图): ----------------------------------------------------- 服务器会话 ID: FF00000520000001 版本: 2.0 状态: Active 属性: 最大带宽: 4294967295 超时: 实体正文超时(秒): 120 耗尽实体正文超时(秒): 120 请求队列超时(秒): 120 空闲连接超时(秒): 120 标头等待超时(秒): 120 最小发送速率(字节/秒): 150 URL 组: URL 组 ID: FF00000340000001 状态: Active 请求队列名称: 请求队列尚未命名。 属性: 最大带宽: 已继承 最大连接数: 已继承 超时: 继承的超时值 已注册的 URL 数目: 1 已注册的 URL 数目: HTTP://+:9001/IGCC/SERVICE/ 服务器会话 ID: FE00000320000001 版本: 2.0 状态: Active 属性: 最大带宽: 4294967295 超时: 实体正文超时(秒): 120 耗尽实体正文超时(秒): 120 请求队列超时(秒): 120 空闲连接超时(秒): 120 标头等待超时(秒): 120 最小发送速率(字节/秒): 150 URL 组: URL 组 ID: FD00000340000001 状态: Active 请求队列名称: 请求队列尚未命名。 属性: 最大带宽: 已继承 最大连接数: 已继承 超时: 继承的超时值 已注册的 URL 数目: 1 已注册的 URL 数目: HTTP://*:5357/FF8A2E73-5DEE-4C79-926C-7D4EE1425F13/ 请求队列: 请求队列名称: 请求队列尚未命名。 版本: 2.0 状态: Active 请求队列 503 详细级别: 基本 最大请求数目: 1000 附加活动进程数目: 1 进程 ID: 4700 请求队列名称: 请求队列尚未命名。 版本: 2.0 状态: Active 请求队列 503 详细级别: 基本 最大请求数目: 1000 附加活动进程数目: 1 进程 ID: 12320
由于重开机多次了,都是这个问题,我真想重新安装nginx,够头疼一会儿的了
已注册的 URL 数目: HTTP://*:5357/FF8A2E73-5DEE-4C79-926C-7D4EE1425F13/
这个又是什么鬼?
问题描述:
端口被系统system,pid[4] 占用的,无法使用两步走的传统常用命令解决,即:
netstat -ano|findstr "端口号"
taskkill /pid [查询的pid] -F
C:\Users\oor>netstat -ano|findstr "9001" TCP 0.0.0.0:9001 0.0.0.0:0 LISTENING 4 TCP [::]:9001 [::]:0 LISTENING 4 C:\Users\oor>netstat -ano|findstr "5357" TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4 TCP [::]:5357 [::]:0 LISTENING 4 C:\Users\oor>taskkill /pid [4] -F 错误: 没有找到进程 "[4]"。
输入 tasklist|findstr "pid" 查看占用端口号的应用程序
C:\Users\oor>tasklist|findstr "4700" OneApp.IGCC.WinService.ex 4700 Services 0 36,380 K C:\Users\oor>tasklist|findstr "12320" svchost.exe 12320 Services 0 9,736 K
打开config文件
有人博主说更改端口号有效,后来证明也无效
最后我拧不过它了,直接更改nginx端口号
把端口号9001更改为9101
启动nginx多次,证明有效
更改前端URL配置
如果不改就会报错
errError: Network Error
保存并执行
npm run dev
成功了
参考博文【解决了我的部分问题】
Windows 下 80 端口被进程 System & PID=4 占用的解决方法