Глядя в / proc / $ mypid / fd /, я вижу эти файлы
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 0 -> /dev/pts/36 (deleted)
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 3 -> socket:[1424055856]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 4 -> socket:[1424055868]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 5 -> socket:[1424055882]
Поскольку у меня есть доступ к коду, я знаю, что эти сокеты привязаны к TCP-соединениям (одно - это соединение с портом 5672 на некоторой машине, другое - соединение с портом 3306 на какой-то другой машине), но я хочу знать, какой сокет к какой связи привязан. Как я могу это сделать?
В целом, как я могу спросить ОС, что находится на другом конце сокета?
networking
proc
socket
benhsu
источник
источник
socat
....Ответы:
Команда lsof
Хороший вариант может быть
lsof
. Какman lsof
говорится, это удобно для получения информации оopen files such as Internet sockets or Unix Domain sockets
.Используй это
Сначала получите обзор
/proc/$PID/fd/
и список номеров сокетов.Например,
socket:[14240]
может вас заинтересовать.Затем используйте
lsof -i -a -p $PID
для печати списка всех сетевых файлов$PID
.-i
создает список сетевых файлов, принадлежащих пользователю или процессу-a
логически объединяет или заданные параметры AND-p $PID
выбирает информацию только о вашем процессеТипичный вывод для моего браузера, работающего с PID
2543
:и больше похожих строк.
Большой! Теперь присмотритесь к
DEVICE
колонне. Это соответствует нашему ранее перечисленному сокету от/proc/$PID/fd/
!И благодаря
NAME
разделу мы можем сказать, что другой конец нашего сокета.В реальном мире вы можете получить хороший объем продукции, но просто отфильтруйте или
grep
для интересующего вас сокета.Я почти уверен, что можно объединить все команды, но этого должно быть достаточно, чтобы вы начали.
источник
grep -rni ffff88002704d380 /proc
. где-то в / proc / может лежать ваш ответ,cat
ваш файл grep найден. Но не связывай меня с этим ... Может быть, это ужасно неправильно.lsof
считывает другую информацию о гнезде из/proc/net/tcp
,/proc/net/tcp6
,/proc/net/udp
, и так далее в зависимости от типа сокета.