Usando lsof para encontrar qué proceso está conectado a un socket de archivos unix

3

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

Tengo varios clientes que se conectan a este socket de archivos Unix, y quiero poder determinar qué PID está conectado a este socket de archivos 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 el que lo está utilizando. Si enumero los archivos abiertos de mi aplicación cliente, veo que está usando el identificador de archivo 0x5d3497ad372af941 (de la lista anterior).

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

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

EDIT

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 ...

    
pregunta Shai 23.01.2017 - 11:11

0 respuestas

Lea otras preguntas en las etiquetas