Verwenden Sie lsof, um herauszufinden, welcher Prozess mit einem Unix-Dateisocket verbunden ist

3

Ich habe eine Serveranwendung, an die ein Unix-Dateisocket gebunden ist /var/run/appsocket.

Ich habe mehrere Clients, die eine Verbindung zu diesem Unix-Dateisocket herstellen, und ich möchte feststellen können, welche PID mit diesem Unix-Dateisocket verbunden ist.

Was ich versucht habe:

sudo lsof /var/run/appsocket

Zeigt Folgendes an:

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

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

Hier wird angezeigt, welcher Prozess den Unix-Dateisocket erstellt hat, aber nicht derjenige, der ihn verwendet. Wenn ich von meinem App-Client geöffnete Dateien aufliste, wird das Dateihandle 0x5d3497ad372af941 (aus der obigen Liste) verwendet.

Ich habe versucht mit mehreren Lösungen aus Hier , aber nichts hat funktioniert. Ich benutze lsof 4.89 und -E wird aus irgendeinem Grund nicht unterstützt.

Wie kann ich diese Verbindung zwischen dem Datei-Handle und dem Prozess herstellen, der es geöffnet hat?

BEARBEITEN

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

Macht den Trick, ist aber überhaupt nicht optimal ...

Shai
quelle
Versuchen Sie netstat, das macht auch Socket-Verbindungen
John Keates