Procurando em / proc / $ mypid / fd /, vejo esses arquivos
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]
Como tenho acesso ao código, sei que esses soquetes estão vinculados às conexões TCP (uma é uma conexão à porta 5672 em alguma máquina, outra é uma conexão à porta 3306 em outra máquina), mas quero saber qual soquete está vinculado a qual conexão. Como eu posso fazer isso?
De maneira mais geral, como posso perguntar ao sistema operacional o que há na outra extremidade do soquete?
networking
proc
socket
benhsu
fonte
fonte
socat
....Respostas:
Comando lsof
Uma boa opção pode ser
lsof
. Comoman lsof
afirma, é útil para obter informações sobreopen files such as Internet sockets or Unix Domain sockets
.Usando isso
Inicialmente, obtenha uma visão geral sobre
/proc/$PID/fd/
e os números de soquete listados.Por exemplo,
socket:[14240]
pode lhe interessar.Em seguida, use
lsof -i -a -p $PID
para imprimir uma lista de todos os arquivos de rede$PID
usados.-i
produz uma lista de arquivos de rede pertencentes a um usuário ou processo-a
combina logicamente ou os parâmetros dados de AND-p $PID
seleciona informações apenas sobre seu processoUma saída típica para o meu navegador executando com um PID de
2543
pode ser:e linhas mais semelhantes.
Ótimo! Agora dê uma olhada mais de perto na
DEVICE
coluna. Corresponde ao nosso soquete listado anteriormente/proc/$PID/fd/
!E, graças à
NAME
seção, podemos dizer qual é a outra extremidade do nosso soquete.Em uma execução no mundo real, você pode obter uma boa quantidade de saída, mas apenas filtre ou atenda
grep
ao seu interesse.Tenho certeza de que é possível combinar todos os comandos, mas isso deve ser suficiente para você começar.
fonte
grep -rni ffff88002704d380 /proc
. em algum lugar em / proc / pode estar sua resposta,cat
seu grep de arquivo foi encontrado. Mas não me prenda a isso ... Pode estar horrível errado aqui.lsof
lê outras informações sobre a tomada de/proc/net/tcp
,/proc/net/tcp6
,/proc/net/udp
e assim por diante, dependendo do tipo soquete.