天天看點

Linux中netstat指令詳解

簡介

Linux指令中的netstat 指令用于顯示各種網絡相關資訊,如網絡連接配接,路由表,接口狀态 (Interface Statistics),masquerade 連接配接,多點傳播成員 (Multicast Memberships) 等,通過這個指令可以大體得知整個系統的網絡情況。

輸出資訊的參數含義

在指令行中直接執行netstat指令,如圖:

Linux中netstat指令詳解
Linux中netstat指令詳解

從整體上看,netstat的輸出結果可以分為兩個部分:

一個是Active Internet connections,稱為有源TCP連接配接,其中”Recv-Q”和”Send-Q”指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況隻能在非常少的情況見到。

另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是隻能用于本機通信,性能可以提高一倍)。

Proto顯示連接配接使用的協定,RefCnt表示連接配接到本套接口上的程序号,Types顯示套接口的類型,State顯示套接口目前的狀态,Path表示連接配接到套接口的其它程序使用的路徑名。

netstat中常見的參數

netstat指令運作的時候,後面可以加很多參數,下面是各參數及其作用:

參數 作用
-a (all) 顯示所有選項,預設不顯示LISTEN相關
-t (tcp) 僅顯示tcp相關選項
-u(udp) 僅顯示udp相關選項
-n 拒絕顯示别名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀态
-p 顯示建立相關連結的程式名
-r 顯示路由資訊,路由表
-e 顯示擴充資訊,例如uid等
-s 按各個協定進行統計
-c 每隔一個固定時間,執行該netstat指令。

提示:LISTEN和LISTENING的狀态隻有用-a或者-l才能看到。

常用指令執行個體

一. 列出所有端口 (包括監聽和未監聽的)

1. 列出所有 tcp 端口 netstat -a

使用指令:

netstat -a | more
           
Linux中netstat指令詳解

2. 列出所有 tcp 端口 netstat -at

使用指令:

Linux中netstat指令詳解

3. 列出所有 udp 端口 netstat -au

使用指令:

Linux中netstat指令詳解

二. 列出所有處于監聽狀态的 Sockets

1. 隻顯示監聽端口 netstat -l

使用指令:

Linux中netstat指令詳解

2. 隻列出所有監聽 tcp 端口 netstat -lt

使用指令:

Linux中netstat指令詳解

3. 隻列出所有監聽 udp 端口 netstat -lu

使用指令:

Linux中netstat指令詳解

4. 隻列出所有監聽 UNIX 端口 netstat -lx

使用指令:

Linux中netstat指令詳解

三. 顯示每個協定的統計資訊

1. 顯示所有端口的統計資訊 netstat -s

使用指令:

Linux中netstat指令詳解

2. 顯示 TCP 端口的統計資訊 netstat -st

使用指令:

Linux中netstat指令詳解

3. 顯示 UDP 端口的統計資訊 netstat -su

使用指令:

Linux中netstat指令詳解

四. 在 netstat 輸出中顯示 PID 和程序名稱 netstat -pt

Linux中netstat指令詳解

五. 在 netstat 輸出中不顯示主機,端口和使用者名 (host, port or user)

當你不想讓主機,端口和使用者名顯示,使用 netstat -n。将會使用數字代替那些名稱。

同樣可以加速輸出,因為不用進行比對查詢。

Linux中netstat指令詳解

如果隻是不想讓這三個名稱中的一個被顯示,使用以下指令

# netsat -a --numeric-ports
# netsat -a --numeric-hosts
# netsat -a --numeric-users
           

六. 持續輸出 netstat 資訊

netstat 将每隔一個固定的時間輸出網絡資訊。

使用指令:

Linux中netstat指令詳解

七. 顯示系統不支援的位址族 (Address Families)

使用指令:

Linux中netstat指令詳解

八. 顯示核心路由資訊 netstat -r

使用指令:

注意: 使用 netstat -rn 顯示數字格式,不查詢主機名稱。

Linux中netstat指令詳解

九. 找出程式運作的端口

并不是所有的程序都能找到,沒有權限的會不顯示,使用 root 權限檢視所有的資訊。

使用指令:

Linux中netstat指令詳解

找出運作在指定端口的程序:

Linux中netstat指令詳解

十. 顯示網絡接口清單

使用指令:

Linux中netstat指令詳解

顯示詳細資訊,像是 ifconfig 使用

netstat -ie

:

Linux中netstat指令詳解

十一. IP和TCP分析

1. 檢視連接配接某服務端口最多的的IP位址

使用指令:

2. TCP各種狀态清單

使用指令:

Linux中netstat指令詳解

先把狀态全都取出來,然後使用uniq -c統計,之後再進行排序。

使用指令:

Linux中netstat指令詳解

最後的指令如下:

Linux中netstat指令詳解

3. 分析access.log獲得通路前10位的ip位址

awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -
           

十二. 顯示目前UDP連接配接狀況

使用指令:

Linux中netstat指令詳解

十三. 顯示UDP端口号的使用情況

使用指令:

Linux中netstat指令詳解

十四. 顯示所有已建立的有效連接配接

使用指令:

Linux中netstat指令詳解

十五. 顯示關于以太網的統計資料

使用指令:

Linux中netstat指令詳解

十六. 統計機器中網絡連接配接各個狀态個數

netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
           
Linux中netstat指令詳解

參考文章:

http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html

http://www.jb51.net/LINUXjishu/152405.html

繼續閱讀