Usando lsof para encontrar qué proceso está conectado a un socket de archivo Unix

2

Tengo una aplicación de servidor que enlaza un socket de archivo Unix /var/run/appsocket.

Tengo varios clientes que se conectan a este socket de archivo Unix, y quiero poder determinar qué PID está conectado a este socket de archivo Unix.

Lo que he intentado:

sudo lsof /var/run/appsocket

Muestra lo siguiente:

appserver 101 appuser 6u unix 0x5d3497ad372af941 0t0 / var / run / appsocket

appserver 101 appuser 9u unix 0x5d3497ad3aa380a9 0t0 / var / run / appsocket

Esto muestra qué proceso creó el socket del archivo Unix, pero no quién lo está usando. Si enumero los archivos abiertos de mi cliente de aplicación, veo que está usando el identificador de archivo 0x5d3497ad372af941 (de la lista anterior).

He intentado usar varias soluciones desde aquí , pero nada funcionó. Estoy usando lsof 4.89 y -Eno es compatible por alguna razón.

¿Cómo puedo hacer esta conexión entre el identificador de archivo y el proceso que lo abrió?

EDITAR

sudo lsof /var/run/appsocket | awk '{print $6}' | uniq | xargs -I {} sh -c "sudo lsof -U | grep {}" | awk '{print $1}' | uniq

Hace el truco, pero no es óptimo en absoluto ...

Shai
fuente
Prueba netstat, eso también hace conexiones de socket
John Keates