CentOS下netstat + awk 查看tcp的網絡連接狀態


執行以下命令:

#netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key."\t".state[key]}’

會得到類似下面的結果,具體數字會有所不同:

FIN_WAIT_1     286

FIN_WAIT_2     960

SYN_SENT       3

LAST_ACK       32

CLOSING         1

CLOSED          36

SYN_RCVD     144

TIME_WAIT    2520

ESTABLISHED 352     #差不多等於連接的並發數

這條命令可以把當前系統的網絡連接狀態分類匯總。

這條語句是在張宴那邊看到,據說是從新浪互動社區事業部技術總監王老大那兒獲得的,非常不錯。

返回參數的說明如下:

SYN_RECV表示正在等待處理的請求數;

ESTABLISHED表示正常數據傳輸狀態;

TIME_WAIT表示處理完畢,等待超時結束的請求數。

------------------------------------------------------------------
再來看看awk:
/^tcp/
濾出tcp開頭的記錄,屏蔽udp, socket等無關記錄。
state[]
相當於定義了一個名叫state的數組
NF
表示記錄的字段數,如上所示的記錄,NF等於6
$NF
表示某個字段的值,如上所示的記錄,$NF也就是$6,表示第6個字段的值,也就是TIME_WAIT
state[$NF]
表示數組元素的值,如上所示的記錄,就是state[TIME_WAIT]狀態的連接數
++state[$NF]
表示把某個數加一,如上所示的記錄,就是把state[TIME_WAIT]狀態的連接數加一
END
表示在最后階段要執行的命令
for(key in state)
遍歷數組
print key,"\t",state[key]
打印數組的鍵和值,中間用\t制表符分割,美化一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM