为什么我在文件描述符中看不到进程打开的端口?

为什么我在文件描述符中看不到进程打开的端口?

我有一个正在运行的rabbitmq管理进程,它打开一个端口15672

tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      5431/beam

正如您所看到的,该过程有一个PIDof 5431

如果我转到/proc/5431并运行,我在该列表中看ls fd不到端口(抑制输出),15672

lr-x------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 0 -> /dev/null
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 1 -> socket:[351505]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 12 -> socket:[375420]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 2 -> socket:[351505]
lr-x------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 3 -> /dev/null
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 4 -> anon_inode:[eventpoll]
lr-x------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 5 -> pipe:[351690]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 54 -> socket:[351702]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 55 -> socket:[351704]
l-wx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 6 -> pipe:[351690]
lr-x------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 60 -> pipe:[351726]
l-wx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 63 -> pipe:[351727]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 68 -> socket:[351740]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 69 -> socket:[351743]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 7 -> anon_inode:[timerfd]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 70 -> socket:[351774]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 71 -> socket:[357375]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 72 -> socket:[351818]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 8 -> socket:[351698]
lrwx------ 1 rabbitmq rabbitmq 64 Sep 12 14:59 9 -> socket:[357167]

有人可以告诉我为什么端口15672没有列出吗?

答案1

你可以这样找到fd:

pid=5431
find /proc/$pid/fd -lname 'socket:\['$(grep 00000000:3D38/proc/$pid/net/tcp|awk '{print $10}')'\]'

3D38 相当于 15672 的 16 进制

相关内容