Saya dapat membaca file /proc/$PID/net/tcp misalnya dan mendapatkan informasi tentang port TCP yang dibuka oleh proses tersebut.
File itu bukan daftar port tcp yang dibuka oleh proses . Ini adalah daftar semua port tcp terbuka di namespace jaringan saat ini, dan untuk proses yang berjalan di namespace jaringan yang sama adalah identik ke konten /proc/net/tcp
.
Untuk menemukan port yang dibuka oleh proses Anda, Anda perlu mendapatkan daftar deskriptor soket dari /proc/<pid>/fd
, lalu cocokkan deskriptor tersebut dengan inode
bidang /proc/net/tcp
.
Tolong
cat /proc/$PID/net/tcp
dan Anda akan mendapatkan hasil seperti ini
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
Kolom kedua (local_address) dari output menunjukkan port dalam Hexadecimal. Gunakan Kalkulator Pemrograman Anda untuk mengubah kode hex menjadi desimal.
Misalnya di sini, port :01BB (dalam hex) sama dengan 433 (dalam desimal) yang merupakan port default HTTPS.