Windows系統非正常關機nginx報錯:nginx: [error] OpenEvent("Global\ngx_stop_20448") failed (2: The system cannot find the file specified)


我遇見的問題較多,前面是處理過程,后面是解決方案

昨天電腦自動關機了,而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 占用的解決方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM