Proc
為什麼在文件描述符中看不到程序打開的埠?
我有一個 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 等價物