Überprüfen Sie alle im Linux-Betriebssystem geöffneten Sockets

Lesezeit: 3 Minuten

Benutzeravatar von stack_A
Stapel_A

Mein Programm öffnet einen Socket mit dieser Funktion:

sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)

Nach dem Senden der Daten wird der Socket geschlossen:

schließen (sockfd);

Aber das Problem ist, wenn das Programm nicht gut läuft und blockiert. Dabei wird die Steckdose nicht geschlossen.

Wie kann ich alle unter Linux OS geöffneten Sockets überprüfen?

  • Fragen Sie nach einer Liste der geöffneten “Dateien” lsof

    – Arztliebe

    8. Juli 2013 um 9:39 Uhr

  • Wenn Sie mit Code umgehen müssen, sollten Sie eine Liste gültiger Sockets führen und bei Bedarf schließen.

    – VoidPointer

    8. Juli 2013 um 9:40 Uhr


  • etwas abseits des Themas, Sie sollten den Wert von socketfd (von Socket zurückgegeben) für eine bessere Fehlerbehandlung überprüfen.

    – Tagesrai

    8. Juli 2013 um 9:42 Uhr

  • Ja, die Socket-Nummer ist jedes Mal gleich, wenn der Socket erstellt wird!

    – Stapel_A

    8. Juli 2013 um 9:50 Uhr

  • Wenn ein Prozess beendet wird, werden alle seine Dateideskriptoren geschlossen (durch den Kernel).

    – Basile Starynkevitch

    8. Juli 2013 um 10:10 Uhr


Auch Sie können verwenden ss Dienstprogramm zum Sichern von Sockets-Statistiken.

Zusammenfassung ausgeben:

ss -s

Total: 91 (kernel 0)
TCP:   18 (estab 11, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         0         -         -        
RAW       0         0         0        
UDP       4         2         2        
TCP       18        16        2        
INET      22        18        4        
FRAG      0         0         0

So zeigen Sie alle Steckdosen an:

ss -a

So zeigen Sie UDP-Sockets an:

ss -u -a

So zeigen Sie TCP-Sockets an:

ss -t -a

Hier können Sie ss man lesen: ss

Benutzeravatar von Chankey Pathak
Chankey Pathak

/proc/net/tcp – eine Liste offener TCP-Sockets

/proc/net/udp -eine Liste offener UDP-Sockets

/proc/net/raw -a listet alle ‘raw’ Sockets auf

Dies sind die Dateien, verwenden cat Befehl, um sie anzuzeigen. Zum Beispiel:

cat /proc/net/tcp

Sie können auch die verwenden lsof Befehl.

lsof ist ein Befehl, der “geöffnete Dateien auflisten” bedeutet und in vielen Unix-ähnlichen Systemen verwendet wird, um eine Liste aller geöffneten Dateien und der Prozesse, die sie geöffnet haben, zu melden.

  • diese Befehle funktionieren nicht in Ubuntu (Ubuntu/Linaro 4.6.1-9ubuntu3)) ===> [email protected]:/home/aa/test# /proc/net/ ::::: dev_snmp6/ netfilter/ rpc/ stat/

    – Stapel_A

    8. Juli 2013 um 10:36 Uhr


  • Dies sind Dateien, verwenden Sie den cat-Befehl, um sie anzuzeigen, wie cat /proc/net/tcp

    – Chankey Pathak

    8. Juli 2013 um 10:48 Uhr

  • Es ist normalerweise einfacher zu bedienen lsof statt dieser.

    – Hasturkun

    8. Juli 2013 um 10:59 Uhr

  • lsof listet keine RAW-Sockets auf (zumindest nicht unter CentOS). Sie erscheinen in cat /proc/net/raw

    – Heikel

    22. Mai 2016 um 10:04 Uhr


  • Insbesondere, wenn Sie bereit sind, die Netlink-Sockets zu überprüfen, siehe /proc/net/netlinkdas alle Netlink-Sockets einschließlich des Kernels anzeigt.

    – mxi1

    8. Juni 2021 um 5:19 Uhr

Sie können verwenden Nettostat Befehl

netstat –listen

Um offene Ports und aufgebaute TCP-Verbindungen anzuzeigen,

netstat -vatn

Um nur offene UDP-Ports anzuzeigen, versuchen Sie den folgenden Befehl:

netstat -vaun

  • RAW-ICMP-Sockets werden auf meinem System nicht in netstat angezeigt. Chankeys Antwort funktioniert bei mir unter CentOS cat /proc/net/raw

    – Heikel

    22. Mai 2016 um 10:13 Uhr

  • @tricky Das liegt daran, dass Sie verwenden müssen netstat -w -loder noch besser ss-w-l. Diese Befehle werden angezeigt Hören rohe Steckdosen. Wenn Sie weitere Informationen wünschen, verwenden Sie zum Beispiel ss -w -lnp.

    – Marius Matutiae

    3. September 2016 um 16:53 Uhr

1433610cookie-checkÜberprüfen Sie alle im Linux-Betriebssystem geöffneten Sockets

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy