Linux 如何找到TCP套接字的inode?

Linux 如何找到TCP套接字的inode?,linux,sockets,tcp,proc,Linux,Sockets,Tcp,Proc,如何将/proc/net/tcp的“inode”列中的值绑定到/proc//fd/中的文件 我的印象是TCP中的inode列有套接字inode的十进制表示,但情况似乎并非如此 例如,如果我运行telnet localhost 80,我会看到以下内容(telnet是pid 9021) /proc/net/tcp包含 sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout

如何将
/proc/net/tcp
的“inode”列中的值绑定到
/proc//fd/
中的文件

我的印象是TCP中的
inode
列有套接字inode的十进制表示,但情况似乎并非如此

例如,如果我运行
telnet localhost 80
,我会看到以下内容(telnet是pid 9021)

/proc/net/tcp
包含

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
23: 0100007F:CE2A 0100007F:0050 01 00000000:00000000 00:00000000 00000000  1000        0 361556 1 00000000 20 0 0 10 -1
这让我觉得连接到127.0.0.1:80的套接字的inode是361556。但是如果我运行ls--inode-alh/proc/9021/fd,我会看到

349886 lrwx------ 1 me me 64 Dec 26 10:51 3 -> socket:[361556]
inode为349886,与tcp表的inode列中的值不同:361556。但是链接目标似乎有正确的名称。类似地,
stat/proc/9021/3
显示:

File: ‘/proc/9021/fd/3’ -> ‘socket:[361556]’
Size: 64            Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 349886      Links: 1
tcp表的inode列中的数字是多少?为什么它不与
ls
stat
报告的inode对齐


(我正在运行Ubuntu 14.10,如果有必要的话)

ls
stat
显示的inode是指向与套接字关联的inode的符号链接。运行
ls-iLalh
将显示右侧索引节点。与之相同的是
stat-L


赫帕·德普·德普。我是在写问题的时候才发现这一点的

Inode id表示每个fs挂载(proc、sys、ntfs、ext…)的一个文件id,因此您可能理解这里处理的是两个不同的fs:procfs和一些伪套接字fs

/proc/pid/fd/目录下的文件是软链接,在procfs中具有inode表示。 这些链接“指向”不同的“fs”-套接字fs

stat-L
ls-ilah
所做的是为您提供链接指向的文件的inode。 您也可以使用
readlink/proc/#pid/fd/#fdnum