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