Linux netstatの使用と出力について質問があります。私のサーバーは、通信の遅れやボトルネックに直面したジレンマを解決しようとしており、掘り下げて調査を始めました。私が知る必要があるのは、IPアドレスごとにグループ化された接続の完全なリストとその接続数の数です。確立されたので、まずは次のようになります。
[root@ip-localhost ec2-user]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
...
9 77.70.115.30
14 54.211.25.39
198 172.31.30.15
3951
問題は、IPごとにリストされている接続数を合計すると、得られた合計が3951ではなく44K以上に増加するため、IPアドレスを持たない最終行数はどういう意味ですか?ファイル記述子?内部カーネル接続は可能ですか?システムのオープンソケットを忘れましたか?
私もこれらの関連性を要約しました。
[root@ip-localhost ec2-user]# netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
1 established)
1 Foreign
4 FIN_WAIT1
8 SYN_SENT
57 LISTEN
67 SYN_RECV
180 TIME_WAIT
1040 LAST_ACK
6323 CLOSE_WAIT
7209 ESTABLISHED
「」
注:netstat出力の最後にリストされている接続には合計がないため、出力全体を挿入する必要がありました。ありがとう
ベストアンサー1
さて、awkを適用して出力を切り取る前に、まずnetstatコマンドを理解する必要があると思います。
netstat -ntu
tcp6 を含むすべての udp および tcp 接続が表示されます。したがって、netstatコマンドの出力にawk&cutを適用しようとすると
netstat -ntu | awk '{print $5}' | cut -d: -f1
次に、切り取りコマンドは「:」を区切り文字として選択し、最初のフィールドを表示します。
TCP v4接続は次のとおりです
12.34.56.78:80
netstat出力のtcp v6接続は次のとおりです。
::1:631
区切り文字 ":"を使用して切り取りを適用すると、tcp v4接続の出力にIPアドレスが表示されますが、tcp v6の出力は空白行になります。そして sort|uniq -c を適用すると、空行が計算されます。
Web サーバーへのすべての TCP 接続をリストするには、次のようにします。
netstat -npa | grep pid_of_your_web_server | grep ESTABLISHED | awk '{print $5}' | awk -F ':' '{print $1}' | sort | uniq -c
または、Webサーバーに関連するすべてのTCP接続
netstat -npa | grep pid_of_your_web_server | grep tcp | grep -v LISTEN | awk '{print $5}' | awk -F ':' '{print $1}' | sort | uniq -c
グループ化せずにすべての合計を計算する
netstat -npa | grep pid_of_your_web_server | grep tcp | grep -v LISTEN | wc -l