昨天电脑自动关机了,而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
看到上图的结果,恍然大悟!如果大家不确定那是一个什么进程,我们对它右键 - 打开文件所在位置
最后我去 services.msc 里停止他并设置这个服务为手动就搞定了
查看当前 9001 端口占用情况
D:\tools\nginx-1.8.0>netstat -ano | findstr 0.0.0.0:9001
D:\tools\nginx-1.8.0>
启动nginx 成功了
参考博文
Windows 下 80 端口被进程 System & PID=4 占用的解决方法