Ich kann zum Beispiel die Datei /proc/$PID/net/tcp lesen und Informationen über die vom Prozess geöffneten TCP-Ports erhalten.
Diese Datei ist keine Liste von TCP-Ports, die vom Prozess geöffnet wurden . Es ist eine Liste aller offenen TCP-Ports im aktuellen Netzwerk-Namespace und für Prozesse, die im selben Netzwerk-Namespace laufen, identisch zum Inhalt von /proc/net/tcp
.
Um von Ihrem Prozess geöffnete Ports zu finden, müssten Sie eine Liste der Socket-Deskriptoren von /proc/<pid>/fd
erhalten , und ordnen Sie diese Deskriptoren dann dem inode
zu Feld von /proc/net/tcp
.
Bitte
cat /proc/$PID/net/tcp
und Sie erhalten eine Ausgabe wie diese
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:01BB 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 2891985097 1 0000000000000000 100 0 0 10 0
Die zweite Spalte (local_address) der Ausgabe zeigt den Port in Hexadezimal. Verwenden Sie Ihren Programmierrechner, um den Hex-Code in Dezimal umzuwandeln.
Zum Beispiel ist hier der Port :01BB (in Hex) gleich 433 (in Dezimal), was der HTTPS-Standardport ist.