GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erhalte ich Echtzeit-Netzwerkstatistiken unter Linux im KB/MB/Bytes-Format und für einen bestimmten Port oder eine Prozess-ID der Anwendung?

Ihre Anwendung sendet wahrscheinlich Pakete an eine bestimmte UDP- oder TCP-Portnummer oder an eine bestimmte IP-Adresse.

Sie können daher so etwas wie TCPdump verwenden, um diesen Datenverkehr zu erfassen.

TCPdump gibt Ihnen nicht die gewünschten Echtzeitstatistiken, aber Sie können seine Ausgabe an etwas weitergeben, das dies tut (ich werde versuchen, diese Antwort später mit einer Antwort zu aktualisieren).

Aktualisieren:

$ sudo tcpdump -i eth1 -l -e -n | ./netbps
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:36:53    2143.33 Bps
11:37:03    1995.99 Bps
11:37:13    2008.35 Bps
11:37:23    1999.97 Bps
11:37:33    2083.32 Bps
131 packets captured
131 packets received by filter
0 packets dropped by kernel

Ich habe das nach einer Minute unterbrochen, indem ich Strg+C gedrückt habe.

Sie müssen am Ende von tcpdump einen geeigneten Filterausdruck hinzufügen Befehl, nur den von Ihrer App generierten Datenverkehr einzubeziehen (z. B. port 123 )

Das Programm netbps ist das:

#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;

my $reporting_interval = 10.0; # seconds
my $bytes_this_interval = 0;
my $start_time = [Time::HiRes::gettimeofday()];

STDOUT->autoflush(1);

while (<>) {
  if (/ length (\d+):/) {
    $bytes_this_interval += $1;
    my $elapsed_seconds = Time::HiRes::tv_interval($start_time);
    if ($elapsed_seconds > $reporting_interval) {
       my $bps = $bytes_this_interval / $elapsed_seconds;
       printf "%02d:%02d:%02d %10.2f Bps\n", (localtime())[2,1,0],$bps;
       $start_time = [Time::HiRes::gettimeofday()];
       $bytes_this_interval = 0;
    }
  }
}

Es ist nur ein Beispiel, je nach Geschmack anpassen.


Verwendung wie unten aus demselben Ordner:

So prüfen Sie den Packer pro Schnittstelle:./netpps.sh eth0

So prüfen Sie die Geschwindigkeit pro Schnittstelle:./netspeed.sh eth0

Messen Sie Pakete pro Sekunde auf einer Schnittstelle netpps.sh als Dateiname

#!/bin/bash

INTERVAL="1"  # update interval in seconds

if [ -z "$1" ]; then
        echo
        echo usage: $0 [network-interface]
        echo
        echo e.g. $0 eth0
        echo
        echo shows packets-per-second
        exit
fi

IF=$1

while true
do
        R1=`cat /sys/class/net/$1/statistics/rx_packets`
        T1=`cat /sys/class/net/$1/statistics/tx_packets`
        sleep $INTERVAL
        R2=`cat /sys/class/net/$1/statistics/rx_packets`
        T2=`cat /sys/class/net/$1/statistics/tx_packets`
        TXPPS=`expr $T2 - $T1`
        RXPPS=`expr $R2 - $R1`
        echo "TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"
done

Messen Sie die Netzwerkbandbreite auf einer Schnittstelle netspeed.sh als Dateiname

#!/bin/bash

INTERVAL="1"  # update interval in seconds

if [ -z "$1" ]; then
        echo
        echo usage: $0 [network-interface]
        echo
        echo e.g. $0 eth0
        echo
        exit
fi

IF=$1

while true
do
        R1=`cat /sys/class/net/$1/statistics/rx_bytes`
        T1=`cat /sys/class/net/$1/statistics/tx_bytes`
        sleep $INTERVAL
        R2=`cat /sys/class/net/$1/statistics/rx_bytes`
        T2=`cat /sys/class/net/$1/statistics/tx_bytes`
        TBPS=`expr $T2 - $T1`
        RBPS=`expr $R2 - $R1`
        TKBPS=`expr $TBPS / 1024`
        RKBPS=`expr $RBPS / 1024`
        echo "TX $1: $TKBPS kB/s RX $1: $RKBPS kB/s"
done

Weitere Informationen finden Sie auf dieser Website http://xmodulo.com/measure-packets-per-second-throughput-high-speed-network-interface.html


Am einfachsten zu verwenden und am einfachsten zu kontrollieren und zur kontinuierlichen Protokollierung in eine Datei umzuleiten:

ifstat

Kommt wahrscheinlich mit den meisten Linux-Distributionen und kann mit brew auf dem Mac installiert werden


Linux
  1. Beginnen Sie mit NetworkManager unter Linux

  2. Linux – Wie kann ich die Netzwerkfreigabe für den aktuellen Prozess aufheben?

  3. Linux – Wie bekomme ich Grindeq (Latex-Plugin für Word), um mit Word in Wine zu arbeiten?

  4. Linux – Wie kann man nach einem bestimmten Wort suchen und Text greifen?

  5. Wie erhalten Sie das Symbol, den MIME-Typ und die Anwendung, die einer Datei auf dem Linux-Desktop zugeordnet sind?

Erfahren Sie, wie Sie Netzwerkgeräte mit Scientific Linux 7.1 und Python erkennen

So steuern Sie Peripherieports:Zugriff auf und Schreiben auf Parallelport mit C unter Linux. Teil I

So zeigen Sie Linux-Systemstatistiken mit Saidar an

Verwenden von ifstat für Linux-Netzwerkstatistiken

So entfernen Sie Dateien mit einer bestimmten Erweiterung in Linux

Erste Schritte mit Arch Linux