如何查詢Port被哪個程式佔用了
雖然MSN還是能用,不過還是將MSN切換到SKYPE,因為別人用SKYPE是無法將檔案傳給你的 (真是豬頭的整合呀 @@)。
然後後來發現,怎麼我的Web Server啟動不了,所以查詢了一下如何找到佔用Port的兇手 (上面先寫那段,應該可以聯想出兇手就是skype)
順便就整理一下在windows及linux時要如何查詢哪個程式佔用了你的PORT
Windows如何查詢被佔用的PORT
windows並沒有提供好的GUI工具讓你查詢,從Windows 工作管理員可以看到眾多的執行中的程式,但無法得知是使用哪些PORT,所以我們只能藉由傳統的指令才能得到,首先用常找網路連線資訊的netsata 指令,來查查佔用你的PORT的執行序PID為何?
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
上述指令,如有需要查詢完整參數,就請自行搜尋網路吧~這裡就不再列出了!!
近期留言