開始--運行--cmd 進入命令提示符 輸入netstat -ano 即可看到所有連接的PID 之后在任務管理器中找到這個PID所對應的程序如果任務管理器中沒有PID這一項,可以在任務管理器中選"查看"-"選擇列"
經常,我們在啟動應用的時候發現系統需要的端口被別的程序占用,如何知道誰占有了我們需要的端口,很多人都比較頭疼,下面就介紹一種非常簡單的方法,希望對大家有用
假如我們需要確定誰占用了我們的9050端口
Windows平台
在windows命令行窗口下執行:
查看所有的端口占用情況
C:\>netstat -ano 協議 本地地址 外部地址 狀態 PID TCP 127.0.0.1:1434 0.0.0.0:0 LISTENING 3236 TCP 127.0.0.1:5679 0.0.0.0:0 LISTENING 4168 TCP 127.0.0.1:7438 0.0.0.0:0 LISTENING 4168 TCP 127.0.0.1:8015 0.0.0.0:0 LISTENING 1456 TCP 192.168.3.230:139 0.0.0.0:0 LISTENING 4 TCP 192.168.3.230:1957 220.181.31.225:443 ESTABLISHED 3068 TCP 192.168.3.230:2020 183.62.96.189:1522 ESTABLISHED 1456 TCP 192.168.3.230:2927 117.79.91.18:80 ESTABLISHED 4732 TCP 192.168.3.230:2929 117.79.91.18:80 ESTABLISHED 4732 TCP 192.168.3.230:2930 117.79.91.18:80 ESTABLISHED 4732 TCP 192.168.3.230:2931 117.79.91.18:80 ESTABLISHED 4732
查看指定端口的占用情況
C:\>netstat -aon|findstr "9050" 協議 本地地址 外部地址 狀態 PID TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2016
P: 看到了嗎,端口被進程號為2016的進程占用,繼續執行下面命令: (也可以去任務管理器中查看pid對應的進程)
查看PID對應的進程
C:\>tasklist|findstr "2016" 映像名稱 PID 會話名 會話# 內存使用 ========================= ======== ================ tor.exe 2016 Console 0 16,064 K
P:很清楚吧,tor占用了你的端口。
結束該進程
C:\>taskkill /f /t /im tor.exe
Netstart選項
netstat命令的功能是顯示網絡連接、路由表和網絡接口信息,可以讓用戶得知目前都有哪些網絡連接正在運作。 該命令的一般格式為: netstat [選項] 命令中各選項的含義如下: -a 顯示所有socket,包括正在監聽的。 -c 每隔1秒就重新顯示一遍,直到用戶中斷它。 -i 顯示所有網絡接口的信息,格式同“ifconfig -e”。 -n 以網絡IP地址代替名稱,顯示出網絡連接情形。 -r 顯示核心路由表,格式同“route -e”。 -t 顯示TCP協議的連接情況。 -u 顯示UDP協議的連接情況。 -v 顯示正在進行的工作。 -A 顯示任何關聯的協議控制塊的地址。主要用於調試 -a 顯示所有套接字的狀態。在一般情況下不顯示與服務器進程相關聯的套接字 -i 顯示自動配置接口的狀態。那些在系統初始引導后配置的接口狀態不在輸出之列 -m 打印網絡存儲器的使用情況 -n 打印實際地址,而不是對地址的解釋或者顯示主機,網絡名之類的符號 -r 打印路由選擇表 -f address -family對於給出名字的地址簇打印統計數字和控制塊信息。到目前為止,唯一支持的地址簇是inet -I interface 只打印給出名字的接口狀態 -p protocol-name 只打印給出名字的協議的統計數字和協議控制塊信息 -s 打印每個協議的統計數字 -t 在輸出顯示中用時間信息代替隊列長度信息。 netstat命令的列標題 Name 接口的名字 Mtu 接口的最大傳輸單位 Net/Dest 接口所在的網絡 Address 接口的IP地址 Ipkts 接收到的數據包數目 Ierrs 接收到時已損壞的數據包數目 Opkts 發送的數據包數目 Oeers 發送時已損壞的數據包數目 Collisions 由這個接口所記錄的網絡沖突數目 netstat的一些常用選項: netstat -s--本選項能夠按照各個協議分別顯示其統計數據。如果你的應用程序(如Web瀏覽器)運行速度比較慢,或者不能顯示Web頁之類的數據,那么你就可以用本選項來查看一下所顯示的信息。你需要仔細查看統計數據的各行,找到出錯的關鍵字,進而確定問題所在。 netstat -e--本選項用於顯示關於以太網的統計數據。它列出的項目包括傳送的數據報的總字節數、錯誤數、刪除數、數據報的數量和廣播的數量。這些統計數據既有發送的數據報數量,也有接收的數據報數量。這個選項可以用來統計一些基本的網絡流量)。 netstat -r--本選項可以顯示關於路由表的信息,類似於后面所講使用route print命令時看到的 信息。除了顯示有效路由外,還顯示當前有效的連接。 netstat -a--本選項顯示一個所有的有效連接信息列表,包括已建立的連接(ESTABLISHED),也包括監聽連接請求(LISTENING)的那些連接。 bnetstat -n--顯示所有已建立的有效連接。 « AWKPHP經典 »netstat -an中state含義 netstat -an中state含義 LISTEN:偵聽來自遠方的TCP端口的連接請求 SYN-SENT:再發送連接請求后等待匹配的連接請求 SYN-RECEIVED:再收到和發送一個連接請求后等待對方對連接請求的確認 ESTABLISHED:代表一個打開的連接 FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認 FIN-WAIT-2:從遠程TCP等待連接中斷請求 CLOSE-WAIT:等待從本地用戶發來的連接中斷請求 CLOSING:等待遠程TCP對連接中斷的確認 LAST-ACK:等待原來的發向遠程TCP的連接中斷請求的確認 TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認 CLOSED:沒有任何連接狀態 其實可以man netstat , 看其中的stat部分解釋 State The state of the socket. Since there are no states in raw mode and usually no states used in UDP, this column may be left blank. Normally this can be one of several values: ESTABLISHED The socket has an established connection. SYN_SENT The socket is actively attempting to establish a connection. SYN_RECV A connection request has been received from the network. FIN_WAIT1 The socket is closed, and the connection is shutting down. FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote end. TIME_WAIT The socket is waiting after close to handle packets still in the network. CLOSED The socket is not being used. CLOSE_WAIT The remote end has shut down, waiting for the socket to close. LAST_ACK The remote end has shut down, and the socket is closed. Waiting for acknowledgement. LISTEN The socket is listening for incoming connections. Such sockets are not included in the output unless you specify the –listening (-l) or –all (-a) option. CLOSING Both sockets are shut down but we still don’t have all our data sent. UNKNOWN The state of the socket is unknown