Wie kann ich PIDs, die eine Verbindung zu lokalen Sockets herstellen, kontinuierlich überwachen?

Wie kann ich PIDs, die eine Verbindung zu lokalen Sockets herstellen, kontinuierlich überwachen?

Manchelokale Prozessestellen eine Verbindung zu 127.0.0.1 auf Port 1234 her und trennen diese.

Ich möchte alle Verbindungen zu diesem Port (oder zum Serverprozess) protokollieren.

ich habe es versucht

 ss -tpn | grep 1234 

Es zeigt eine Liste an, stoppt dann aber; es protokolliert keine neuen Verbindungen, sodass ich weder die Sockets noch die PID des Besitzers erfassen kann.

Mit welchem ​​Tool kann ich die PID der Verbindungs- und Trennbuchsen ermitteln?

Antwort1

Es gibt ein „Watch“-Tool, das dies erledigt, oder Sie können
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
den Code an eine Datei anhängen und ihn verfolgen. Dies führt wahrscheinlich zu einer erhöhten CPU-Auslastung, hilft Ihnen aber möglicherweise bei dem, was Sie suchen.
Linux-Watch-Befehl

Antwort2

connectEs gibt zwei Tools, mit denen Sie TCP- Ereignisse unter Linux überwachen können :

Der Unterschied zwischen beiden besteht darin, dass Ersteres Optionen zum Anpassen der Ausgabe bietet (z. B. Filtern nach PID oder Portnummer), während Letzteres ein einfacheres Tool ist und keine ausgefallenen Optionen bietet.

Für Ihren Anwendungsfall wäre die einfachste Möglichkeit, bcc zu installieren und Folgendes auszuführen:

tcpconnect.py -P 1234

Wenn Sie diese Tools mit dem Paketmanager Ihrer Distribution installieren, beachten Sie, dass einige Distributionen sie nicht unter platzieren, tcpconnectsondern stattdessen /usr/binan einer anderen Stelle wie /usr/share. Überprüfen Sie also unbedingt, wo Ihre Distribution diese Dateien platziert, wenn Sie sie nicht finden können.

Antwort3

Während ssnur Socket-Statistiken ausgegeben werden und Sie kontinuierliche Dumps simulieren müssten (mit watchoder einer whileSchleife), netstatgibt es einen kontinuierlichen Modus ( -c).

netstat -ntcp | grep '  127.0.0.1:1234'

Beachten Sie, dass die beiden Leerzeichen vor 127... kein Tippfehler sind, wenn Sie nur die Client-PID erfassen müssen.
Beispielausgabe:

$ netstat -ntcp | grep '  127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc

Antwort4

watch -n 1 -d 'lsof -n -itcp:1234'

kein Logging, sondern leistungsstarkes Monitoring in Echtzeit mit Highlights...

$ man watch

  • -n 1 - jede 1 Sekunde
  • -d - Unterschiede hervorheben

$ man lsof

  • -n – keine Auflösung von IPs in Domänen.
  • -itcp:1234 – jeder interagiert mit TCP-Port 1234

verwandte Informationen