我遇見的問題較多,前面是處理過程,后面是解決方案
昨天電腦自動關機了,而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 占用的解決方法