GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir des statistiques réseau en temps réel sous Linux au format KB/MB/Bytes et pour un port ou un ID de processus d'application spécifique ?

Votre application envoie probablement des paquets à un numéro de port UDP ou TCP spécifique ou à une adresse IP spécifique.

Vous pouvez donc utiliser quelque chose comme TCPdump pour capturer ce trafic.

TCPdump ne vous donne pas les statistiques en temps réel que vous désirez, mais vous pouvez transmettre sa sortie à quelque chose qui le fait (j'essaierai de mettre à jour cette réponse avec une réponse plus tard).

Mise à jour :

$ 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

J'ai interrompu cela après une minute en appuyant sur Ctrl+C.

Vous devez ajouter une expression de filtre appropriée à la fin du tcpdump commande pour inclure uniquement le trafic généré par votre application (par exemple, port 123 )

Le programme netbps est-ce :

#!/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;
    }
  }
}

C'est juste un exemple, ajustez selon vos goûts.


Utilisation comme ci-dessous à partir du même dossier :

Pour vérifier le packer par interface :./netpps.sh eth0

Pour vérifier la vitesse par interface :./netspeed.sh eth0

Mesurer les paquets par seconde sur une interface netpps.sh comme nom de fichier

#!/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

Mesurer la bande passante réseau sur une interface netspeed.sh comme nom de fichier

#!/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

Veuillez consulter ce site pour plus d'informations http://xmodulo.com/measure-packets-per-second-throughput-high-speed-network-interface.html


Le plus facile à utiliser et le plus facile à contrôler la sortie et à rediriger vers un fichier pour une journalisation continue :

ifstat

Vient probablement avec la plupart des distributions Linux et peut être installé avec brew sur mac


Linux
  1. Linux - Comment annuler le partage du réseau pour le processus actuel ?

  2. Linux - Comment Grep Pour Un Mot Spécifique Et Saisir Du Texte?

  3. Comment obtenir uniquement l'utilisateur, le pid et la commande exécutée pour un processus spécifique ? (Ubuntu 11.10)

  4. comment utiliser netstat sur un port spécifique sous Linux

  5. Comment voir sous Linux quelle interface réseau et quelle adresse IP source sont utilisées pour une route vers un hôte de destination spécifique ?

Apprenez à détecter les équipements réseau avec Scientific Linux 7.1 et Python

Comment contrôler les ports périphériques :accéder et écrire sur le port parallèle avec C sous Linux. Première partie

Comment afficher les statistiques du système Linux avec Saidar

Utilisation d'ifstat pour les statistiques réseau Linux

Comment supprimer des fichiers avec une extension spécifique sous Linux

Comment démarrer avec Arch Linux