本文轉載自檢查端口狀態:netstat和lsof
導語
因為最近經常碰網絡, 應用經常會占用網絡端口, 有時就導致程序啟動不了.這里介紹怎么檢查端口,知道端口占用,被何占用.
Window版
目標:在Windows環境下,用netstat
命令查看某個端口號是否占用,為哪個進程所占用. 操作:操作分為兩步
- 查看該端口被那個PID所占用;方法一:有針對性的查看端口,使用命令
netstat –ano|findstr “<端口號>”
,如圖,最后一列為PID。圖中的端口號為1068,所對應的PID為3840。
- 查看該PID對應的進程名稱。
- 用命令查找,
tasklist|findstr “”
- 任務管理器,調出PID顯示進程
- 用命令查找,
- 可以用命令
ntsd -c q -p "PID"
或者任務管理器終止進程.
在命令行中輸入netstat /? 可以查看netstat的相關信息。 netstat 顯示協議統計信息和當前 TCP/IP 網絡連接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-t] [-v] [interval]
- -a 顯示所有連接和監聽端口。
- -b 顯示包含於創建每個連接或監聽端口的可執行組件。在某些情況下已知可執行組件擁有多個獨立組件,並且在這些情況下包含於創建連接或監聽端口的組件序列被顯示。這種情況下,可執行組件名在底部的 [] 中,頂部是其調用的組件,等等,直到 TCP/IP 部分。注意此選項可能需要很長時間,如果沒有足夠權限可能失敗。
- -e 顯示以太網統計信息。此選項可以與 -s選項組合使用。
- -n 以數字形式顯示地址和端口號。
- -o 顯示與每個連接相關的所屬進程 ID。
- -p proto 顯示 proto 指定的協議的連接;proto 可以是下列協議之一: TCP、UDP、TCPv6 或 UDPv6。如果與 -s 選項一起使用以顯示按協議統計信息,proto 可以是下列協議之一:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
- -r 顯示路由表。
- -s 顯示按協議統計信息。默認地,顯示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統計信息;-p 選項用於指定默認情況的子集。
- -t 顯示當前連接卸載狀態。
- -v 與 -b 選項一起使用時將顯示包含於為所有可執行組件創建連接或監聽端口的組件。
- interval 重新顯示選定統計信息,每次顯示之間暫停時間間隔(以秒計)。按 CTRL+C 停止重新顯示統計信息。如果省略,netstat 顯示當前配置信息(只顯示一次)
Linux和Mac
- 利用lsof命令,通用.
lsof -i :PIDnum
- Linux使用
netstat -anp | grep PIDnum
- MacOSs使用
netstat -anp tcp | grep PIDNum
雖然可以列出端口占用情況,但是不顯示那個程序占用.