
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
connect
Es gibt zwei Tools, mit denen Sie TCP- Ereignisse unter Linux überwachen können :
- tcpconnect.pyin BCC-Tools (pkgs.org,Repologie)
- tcpconnect.btin bpftrace (pkgs.org,Repologie)
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, tcpconnect
sondern stattdessen /usr/bin
an 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 ss
nur Socket-Statistiken ausgegeben werden und Sie kontinuierliche Dumps simulieren müssten (mit watch
oder einer while
Schleife), netstat
gibt 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