Wie finde ich angeschlossene Prozesse über Unix Domain Socket?

1262
tengreencolors

Ich habe netstat verwendet, um die RefCnt-Spalte zu erwerben. Und es gibt 2 verbundene Prozesse über /var/run/mysqld/mysqld.sock. Wie finde ich ihre PIDs?

# netstat -a -p -A unix  Proto RefCnt Flags Type State I-Node PID/Program name Path ... unix 2 [ ACC ] STREAM LISTENING 1432153 7517/mysqld /var/run/mysqld/mysqld.sock ... 
1

1 Antwort auf die Frage

1
sdproto

Ich denke das ist eine Trickfrage :)

Unter der Spalte PID / Programmname steht 7517 / mysqld . Der 7517 ist die PID. Ist es das, wonach Sie gesucht haben?

Sie könnten auch eine

ps -auxww | grep 7517

Nur um zu überprüfen

BEARBEITEN:

Sie können verwenden

pgrep -P pid, um die PIDs der anderen Prozesse zu erhalten. Sie können dieses kurze Bash-Skript verwenden, um weitere Informationen zu erhalten. Ersetzen Sie "YOUR_PID" durch die PID von netstat:

for x inpgrep -P DEINE_PID; do ps auxwww | grep $x; done

Ich suche nach Prozessen, die diesen Socket verwenden. Gemäß der RefCnt-Spalte (wie ich in der ursprünglichen Frage erwähnt habe) muss es sich um zwei Pids handeln, nicht um einen, wie Sie vorgeschlagen haben. Ich suche nicht nach dem Prozess, der offene Socket, ich suche nach allen Prozessen, die ihn verwenden. tengreencolors vor 6 Jahren 0
Gibt Ihnen die aktualisierte Antwort, wonach Sie suchen? sdproto vor 6 Jahren 0
Nein, Sie sind völlig falsch und verstehen meine ursprüngliche Frage und meinen Kommentar überhaupt nicht. tengreencolors vor 6 Jahren 0
Ich bin mir ziemlich sicher, dass ich verstehe, was Sie fragen. Diese PID von netstat ist die übergeordnete PID der angehängten Prozesse. Nehmen Sie diese und setzen Sie sie nach pgrep -P, und es werden genau die Pids dieser untergeordneten / angehängten Prozesse zurückgegeben. Wenn Sie dann diese Pids mit ps nachschlagen, können Sie die Details sehen. Ich bin seit über 35 Jahren Unix-Network-Administrator. sdproto vor 6 Jahren 0
Vielen Dank für die ausführliche Antwort, mein schlechtes, ich habe Sie nicht richtig über Eltern pid verstanden. Leider funktioniert es auf Ubuntu 16.04 nicht - es gibt keine Kinder für die 7517 PID. Ich habe versucht, die Anzahl der untergeordneten Prozesse für andere Prozesse anhand ihrer RefCnt-Spalte zu überprüfen. Sie stimmen nicht überein (normalerweise verarbeitet die Anzahl der untergeordneten Elemente weniger als RefCnt). Nicht sicher, dass RefCnt die Anzahl der untergeordneten Prozesse ist, die den Socket geöffnet haben. Und in netstat (8) heißt RefCnt "Der Referenzzähler (dh verbundene Prozesse über diesen Socket)." - sieht nicht aus wie "Verweis", der untergeordneter Prozess sein soll. tengreencolors vor 6 Jahren 0
noch keine Lösung über netstat gefunden und nicht sicher, ob netstat nützlich sein könnte. Ich habe aber eine andere Lösung gefunden: lsof + E -aU | grep mysqld.sock` hier [link] (https://unix.stackexchange.com/questions/16300/whos-got-the-other-end-of-this-unix-socketpair/190606#190606) die Ausgabe in meinem case: mysqld 7517 mysql 44u unix 0xffff880034932800 0t0 1432153 /var/run/mysqld/mysqld.sock type = STaMam mysqld 7517 mysql 331u unix 0xffff88000a7a8400 0t0 2001269 /var/rys/mun * 19719 **, mysql, 3u Die PID ist ** 19719 ** tengreencolors vor 6 Jahren 0