如何查詢Port被哪個程式佔用了

  Linux, Windows
 

如何查詢Port被哪個程式佔用了

雖然MSN還是能用,不過還是將MSN切換到SKYPE,因為別人用SKYPE是無法將檔案傳給你的 (真是豬頭的整合呀 @@)。
然後後來發現,怎麼我的Web Server啟動不了,所以查詢了一下如何找到佔用Port的兇手 (上面先寫那段,應該可以聯想出兇手就是skype)
順便就整理一下在windows及linux時要如何查詢哪個程式佔用了你的PORT

Windows如何查詢被佔用的PORT

windows並沒有提供好的GUI工具讓你查詢,從Windows 工作管理員可以看到眾多的執行中的程式,但無法得知是使用哪些PORT,所以我們只 能藉由傳統的指令才能得到,首先用常找網路連線資訊的netsata 指令,來查查佔用你的PORT的執行序PID為何?

C:\> netstat -nao |find "0.0.0.0:80"

 

 

  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4116

找出PID,後,你可以用tasklist去看看這個PID 是哪個執行程式

C:\> tasklist /fi "pid eq 4116"

映像名稱                       PID 工作階段名稱      工作階段 #    RAM使用量
========================= ======== ================ =========== ============
skype.exe                     4116 Console                   0      6,476 K

然後如要關掉那個程式或服務,只要使用taskkill 即可,指令如下:

C:\>  taskkill /pid 4116 /F
成功: 處理程序 PID 4116 已經終止了。

這樣偷偷佔用你PORT的程式就被你趕出啦~XD

Linux如何查詢被佔用的PORT

netstat

在Linux時,網路推薦兩種方式,首推還是netstat,不過Linux會列出一堆資訊,不像windows一樣(這是更好吧~^^)

# netstat -apn |grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      8688/httpd

如果你覺得列出太多,可以再後方加上 > log.txt 轉到檔案再慢慢看,你也可以下 netstat -tunpl | grep :80    查看目前你指定的PORT正被誰使用著

losf

lsof(lsof的全稱是list open files),他有個別名叫「Unix除錯的瑞士軍刀」,使用後覺得這個更好用更直覺,這指令可用來查看正在運行中程序開啟了哪些文件

# lsof -i:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE NODE NAME
httpd   8688 apache    3u  IPv4 243301       TCP *:http (LISTEN)
httpd   8689  apache    3u  IPv4 243301       TCP *:http (LISTEN)

不過在測試時,發現自己的那台liunx並未內建安裝(可能當初手動安裝吧),所以又再另外先行安裝了這工具

最後,當找出後如果要強制停用,可以用kill -9 PIDnumber 即可刪除正在運行的程序

# kill -9 8688

上述指令,如有需要查詢完整參數,就請自行搜尋網路吧~這裡就不再列出了!!

Be Sociable, Share!