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

Wie kann man die Netzwerkaktivität eines Befehls nachverfolgen?

netstat der Einfachheit halber

Mit netstat und nach der PID oder dem Prozessnamen suchen:

# netstat -np --inet | grep "thunderbird"
tcp        0      0 192.168.134.142:45348   192.168.138.30:143      ESTABLISHED 16875/thunderbird
tcp        0      0 192.168.134.142:58470   192.168.138.30:443      ESTABLISHED 16875/thunderbird

Und Sie könnten watch verwenden für dynamische Updates:

watch 'netstat -np --inet | grep "thunderbird"'

Mit:

  • -n :Numerische Adressen anzeigen, anstatt zu versuchen, symbolische Host-, Port- oder Benutzernamen zu ermitteln
  • -p :Zeigt die PID und den Namen des Programms an, zu dem jeder Socket gehört.
  • --inet :Nur Raw-, UDP- und TCP-Protokoll-Sockets anzeigen.

Streben für Ausführlichkeit

Sie sagten, Sie hätten den strace ausprobiert Tool, aber haben Sie die Option trace=network ausprobiert? ?Beachten Sie, dass die Ausgabe sehr ausführlich sein kann, sodass Sie möglicherweise etwas gruppieren müssen. Sie könnten beginnen, indem Sie "sin_addr" gruppieren.

 strace -f -e trace=network <your command> 2>&1 | grep sin_addr

Oder verwenden Sie für einen bereits laufenden Prozess die PID:

 strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr

sysdig ermöglicht es Ihnen, die gesamte Aktivität des Kernels oder mehrerer Befehle, die in Ihrem System ausgeführt werden, auf einmal zu überwachen, einschließlich und nicht beschränkt auf Netzwerkaktivitäten.

Da die Ausgabe groß sein kann, müssen Sie Filter erstellen, die Standardseite für die einfachsten Filter ist ziemlich verständlich.

Es hat auch den Vorteil, dass es nicht als Anwendungs-Wrapper wie in strace verwendet wird , und es kann sehr mächtig sein.

Aus Sysdig-Beispielen

Netzwerken

Sehen Sie sich die wichtigsten Prozesse in Bezug auf die Nutzung der Netzwerkbandbreite an

sysdig -c topprocs_net 

Zeigen Sie die Netzwerkdaten an, die mit dem Host 192.168.0.1 ausgetauscht wurden

Als Binär:

sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1   

Als ASCII:

sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1 

Sehen Sie sich die Top-Localserver-Ports an:

In Bezug auf etablierte Verbindungen:

sysdig -c fdcount_by fd.sport "evt.type=accept"   

In Bezug auf Gesamtbytes:

sysdig -c fdbytes_by fd.sport 

Sehen Sie sich die Top-Client-IPs an

In Bezug auf etablierte Verbindungen

sysdig -c fdcount_by fd.cip "evt.type=accept"   

In Bezug auf Gesamtbytes

sysdig -c fdbytes_by fd.cip 

Listet alle eingehenden Verbindungen auf, die nicht von Apache bedient werden.

sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

Ich würde einen neuen Netzwerk-Namespace erstellen, ihn mit dem echten Netzwerk überbrücken und dann die Brücke mit tcpdump überwachen .


Linux
  1. So benennen Sie Dateien unter Linux um

  2. So verwenden Sie den Su-Befehl unter Linux

  3. So verwenden Sie das Linux-Befehlszeilentool sipcalc

  4. Wie plane ich einen Rsync-Befehl?

  5. Wie kann man beenden, wenn ein Befehl fehlgeschlagen ist?

So verwenden Sie du Command unter Linux

So konfigurieren Sie das Netzwerk in Vagrant

So verwenden Sie den PS-Befehl

So verwenden Sie den TOP-Befehl

So installieren Sie Sysdig, um Ihr Linux-System zu überwachen

Wie verfolgt man ein Java-Programm?