.
.
.
.
.
我們經常使用的網絡程序偶爾會遇到端口被占用的情況,但是卻苦於無法找到占用端口的程序,這篇文章將教你兩個命令,輕松排查端口占用問題。
關鍵命令:
1.查詢端口占用:netstat -ano | findstr "7001"
2.查詢占用端口的進程:tasklist /fi "pid eq 2072"
3.[贈送]干掉占用的進程:taskkill /im avp.exe /f
下面開始進入正題,扯一扯事件的始末。急於解決問題的朋友就不必往下看了,上面三條命令足矣解決燃眉之急。
有一天早晨,用小學生寫作文的話說就是風和日麗晴空萬里,我來到辦公室啟動各種開發環境准備開始苦逼的一天。
Weblogic 啟動到80%左右就一直停在那里,控制台最后一行已經輸出了:
<2013-11-13 上午10時26分53秒 CST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
正常來說即使 Eclipse Progress 進度條顯示不到100%也可以使用瀏覽器訪問了,可是誰知用瀏覽器一訪問,返回:
Internet Explorer cannot display the webpage
隱隱的有種不詳的預感,但是也沒做太多的懷疑,畢竟進度條還沒走完。
等啊等,等啊等。。。啟動進度一直停留在百分之80幾,等了10分鍾,Eclipse 終於報了一個錯誤,似乎是說Weblogic啟動超時。
再啟動還是同樣的問題。。
排查了半天,想了各種辦法,依然找不出原因來。
無奈只好仔細看控制台上輸出的日志,忽然一行log赫然映入眼簾:
<2013-11-13 上午10時26分53秒 CST> <Error> <Server> <BEA-002606> <Unable to create a server socket for listening on channel "Default[6]". The address 127.0.0.1 might be incorrect or another process is using port 7001: java.net.BindException: Address already in use: JVM_Bind.>
哈哈,踏破鐵鞋無覓處,原來錯誤消息就在眼前。。很明顯它說7001端口被占用了。
於是就該拿出上面的命令來解決問題了!
趕緊啟動CMD:
C:\Users\yuhuashi>netstat -ano | findstr "7001"
TCP 127.0.0.1:7001 127.0.0.1:7001 ESTABLISHED 2072
7001端口被PID為2072的進程給占用了,趕緊看看2072是何方神聖:
C:\Users\yuhuashi>tasklist /fi "pid eq 2072"
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
avp.exe 2072 Services 0 93,628 K
哈,被我抓到了。。是avp.exe,即卡巴斯基。
呃,排查到此就結束了,元凶也被抓到了,只是要不要對它 kill 呢?那就要看各位看官的實際情況適當解決了。
不過這里說一下這個附贈的 taskkill 命令。
這個命令可以將某個進程結束掉,這里我用我那個啟動失敗的 Weblogic 給大家做個示范:
C:\Users\yuhuashi>taskkill /im java.exe /f
SUCCESS: The process "java.exe" with PID 4772 has been terminated.
成功結束了 java.exe 進程。
im 參數表示要結束的進程名稱,當然也可以使用 pid,改成 /pid 參數即可。
如果你輸入了一個不存在的進程名稱或者PID,那么執行結果如下:
C:\Users\yuhuashi>taskkill /im java.exe /f
ERROR: The process "java.exe" not found.
