Finden Sie heraus, welcher Prozess sich am anderen Ende einer Leitung befindet


34

Ich versuche, ein merkwürdiges Verhalten einiger Prozesse nachzuvollziehen, und bin auf einen Punkt gestoßen, an dem ich nicht sicher bin, wie ich die Vergangenheit nachvollziehen soll. Der angehängte Prozess, an den ich angehängt habe, hat Folgendes strace -pgezeigt:

Process 7926 attached - interrupt to quit
read(3, 

Okay, es wartet auf die Eingabe auf fd 3, also habe ich nachgesehen, was es ist:

$ ls -l /proc/7926/fd/3
lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922]

Okay, es ist eine Pfeife ... nun die Frage - wer ist der Schreiber dieser Pfeife? Ich erinnere mich, dass es unter Linux eine spezielle Funktion für Unix-Domain-Sockets gibt, bei der Sie einen Dateipfad anfordern können, der mit einem NUL-Byte beginnt, um auf den "abstrakten Socket-Namespace" zuzugreifen (hier erwähnt: http://tkhanson.net/cgit.cgi) /misc.git/plain/unixdomain/Unix_domain_sockets.html ). Ich bin nicht sicher, ob es etwas Ähnliches für Pfeifen gibt, das ich ausnutzen könnte, aber ich habe nichts gefunden.

Ich war ein Werkzeug wie gehofft , fuseroder lsofkönnten helfen, aber ich habe nicht überall bekommen.

Irgendwelche Ideen?

Antworten:


32

Der Symlink-Inhalt "pipe: [20043922]" ist eine eindeutige ID. Das andere Ende der Pipe hat eine passende ID.

(find /proc -type l | xargs ls -l | fgrep 'pipe:[20043922]') 2>/dev/null

sollte Ihnen beide Enden des Rohrs zeigen.


1
Gutes Denken, danke! Während der Untersuchung bin ich auch auf diesen Thread hier gestoßen: serverfault.com/questions/48330/…. Ich dachte, ich würde den Link auch hier nur für andere löschen.
FatalError

2

Sie können die Liste der Prozesse über die Pipe mit dem folgenden lsofBefehl abrufen:

lsof | grep 'FIFO.*20043922'

Die Ausgabe zeigt die Reader (in der FD-Spalte mit Einträgen wie 1r) und Writer (dieselben Spalten mit Einträgen wie 2w).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.