Proc

為什麼在文件描述符中看不到程序打開的埠?

  • September 13, 2018

我有一個 rabbitmq 管理程序正在執行,它打開一個埠15672

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

如您所見,該過程PID具有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那裡沒有列出埠嗎?

您可以通過以下方式找到 fd:

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

3D38 是 15672 的 base-16 等價物

引用自:https://unix.stackexchange.com/questions/468665