パイプの反対側にあるプロセスを見つける


34

私はいくつかのプロセスの奇妙な振る舞いを追跡しようとしていますが、過去を追跡する方法がわからない点に遭遇しました。を使用して添付したハングプロセスは、これをstrace -p示した:

Process 7926 attached - interrupt to quit
read(3, 

さて、fd 3での入力を待っているので、私はそれが何であるかを調べに行きました:

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

さて、それはパイプです...今、質問です-このパイプの作者は誰ですか?Linuxには、Unixドメインソケット用の特別な機能があり、NULバイトで始まるファイルパスを要求して「抽象ソケットネームスペース」にアクセスできることを思い出します(ここで説明します:http : //tkhanson.net/cgit.cgi /misc.git/plain/unixdomain/Unix_domain_sockets.html)。パイプに利用できる類似のものがあるかどうかはわかりませんが、何も見つかりませんでした。

私はのようなツールを望んでいたfuserlsofのかもしれないのヘルプを、私はどこにももらっていません。

何か案は?

回答:


32

シンボリックリンクのコンテンツ「pipe:[20043922]」は一意のIDです。パイプのもう一方の端には一致するIDがあります。

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

パイプの両端が表示されます。


1
良い考え、ありがとう!調査しながら、私もここでこのスレッドに出くわしたserverfault.com/questions/48330/...ので、私は、私はあまりにも他の人のためにあまりにもちょうどFFRここにリンクを削除しようと思いました。
あるFatalError

2

lsof次のコマンドを使用して、パイプを使用してプロセスのリストを取得できます。

lsof | grep 'FIFO.*20043922'

出力には、リーダー(1rなどのエントリがあるFD列)とライター(2wなどのエントリがある同じ列)が表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.