Answers:
例如,我可以读取/ proc / $ PID / net / tcp文件,并获取有关进程打开的TCP端口的信息。
该文件不是该进程打开的tcp端口的列表。它是当前网络名称空间中所有打开的tcp端口的列表,对于在同一网络名称空间中运行的进程,其内容与相同/proc/net/tcp
。
要查找您的进程打开的端口,您需要从获取套接字描述符的列表/proc/<pid>/fd
,然后将这些描述符与的inode
字段匹配/proc/net/tcp
。
fd
线程的目录只是重复fd
过程的目录。
请
cat /proc/$PID/net/tcp
你会得到这样的输出
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
输出的第二列(local_address)以十六进制显示端口。使用您的编程计算器将十六进制代码转换为十进制。
例如,在这里,端口:01BB(十六进制)等于433(十进制),这是HTTPS默认端口。
fd
每个线程的所有目录?还是/proc/pid/fd
目录“继承”/proc/pid/task/tid/fd
目录?