Linux
Netstat 按埠計數 TIME_WAIT 連接數
我可以在一個埠上獲得單獨的 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 的 (
ksh
和bash
) 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