Mirando en / proc / $ mypid / fd /, veo estos archivos
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 tengo acceso al código, sé que estos sockets están vinculados a conexiones TCP (uno es una conexión al puerto 5672 en alguna máquina, otro es una conexión al puerto 3306 en alguna otra máquina), pero quiero saber qué socket es atado a qué conexión. ¿Cómo puedo hacer eso?
En términos más generales, ¿cómo puedo preguntarle al sistema operativo qué hay en el otro extremo del socket?
networking
proc
socket
benhsu
fuente
fuente
socat
....Respuestas:
Comando lsof
Una buena opción podría ser
lsof
. Comoman lsof
afirma, es útil para obtener información sobreopen files such as Internet sockets or Unix Domain sockets
.Usándolo
Al principio, obtenga una descripción general
/proc/$PID/fd/
y los números de socket enumerados.Por ejemplo,
socket:[14240]
podría interesarte.Luego, use
lsof -i -a -p $PID
para imprimir una lista de todos los$PID
usos de los archivos de red .-i
produce una lista de archivos de red que pertenecen a un usuario o proceso-a
combina lógicamente o parámetros dados de AND-p $PID
selecciona información solo sobre su procesoUna salida típica para mi navegador que se ejecuta con un PID de
2543
podría ser:y más líneas similares.
¡Excelente! Ahora mire más de cerca la
DEVICE
columna. ¡Coincide con nuestro zócalo listado anteriormente de/proc/$PID/fd/
!Y gracias a la
NAME
sección podemos decir cuál es el otro extremo de nuestro zócalo.En una ejecución en el mundo real, puede obtener una buena cantidad de salida, pero solo filtra o
grep
por su socket de interés.Estoy bastante seguro de que uno podría combinar todos los comandos, pero eso debería ser suficiente para comenzar.
fuente
grep -rni ffff88002704d380 /proc
. en algún lugar debajo de / proc / puede encontrar su respuesta,cat
su archivo grep encontrado. Pero no me apuntes sobre esto ... Puede estar horrible mal aquí.lsof
lee otra información sobre la toma de/proc/net/tcp
,/proc/net/tcp6
,/proc/net/udp
, y así sucesivamente dependiendo del tipo de enchufe.