Как мне найти индекс TCP-сокета?

Как связать значения в столбце «inode»/proc/net/tcp к файлам в/proc/<pid>/fd/?

У меня сложилось впечатление, чтоinode столбец в TCP имел десятичное представление 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

что заставляет меня думать, что inode сокета, подключенного к 127.0.0.1:80, равен 361556. Но если я запустлюls --inode -alh /proc/9021/fd, Я вижу

349886 lrwx------ 1 me me 64 Dec 26 10:51 3 -> socket:[361556]

Inode - 349886, который отличается от значения в столбце inode таблицы tcp: 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

Какой номер в столбце inode таблицы tcp? Почему он не совпадает с индексом, как сообщаетls или жеstat?

(Я использую Ubuntu 14.10, если это имеет значение)

Ответы на вопрос(2)

Ваш ответ на вопрос