Linux

Netstat 按埠計數 TIME_WAIT 連接數

  • September 3, 2016

我可以在一個埠上獲得單獨的 TIME_WAIT 計數,

netstat -nat | grep :11300 | grep TIME_WAIT | wc -l;

但是如何根據所有埠執行此操作,例如:

11300   2900 connection
3306    1200 connection
80      890 connection

這些天我送去使用sed這種類型的東西。

$ netstat -nt | sed -r -n 's/^tcp +[0-9]+ +[0-9]+ [0-9\.]+(:[0-9]+).+TIME_WAIT/\1/p' | sort | uniq -c | sort -n
     5 :443  
     8 :80

在這裡,我們很感興趣的一條線看起來很特殊,但實際上是其中的一部分。因此,我們使用該部分的匹配組定義正則表達式,然後僅列印我們關心的匹配行。我還沒有找到更好的方法sort | uniq -c。最後一種是為了美觀和實用。

我確信有一種更簡潔的方法可以做到這一點,而無需加倍awk和加倍grep。(希望有人能解釋一下)

基於 Shell 的 (kshbash) For 循環

for x in $ (netstat -nat | grep TIME_WAIT | awk '{print $4}' | \
           awk -F":" '{print $2}' | sort -u) ; do
  printf "TIME_WAIT on Port $x : `netstat -nat|grep ":$x"|grep TIME_WAIT|wc -l`\n"
done

輸出

TIME_WAIT on Port 42489 : 1
TIME_WAIT on Port 80 : 9

引用自:https://serverfault.com/questions/629457