Borunun diğer ucunda hangi işlem olduğunu bulun


34

Birkaç işlemin tuhaf davranışlarını izlemeye çalışıyorum ve geçmişin nasıl izleneceğinden emin olmadığım bir noktaya rastladım. Kullandığım takma işlemi şunu strace -pgösterdi:

Process 7926 attached - interrupt to quit
read(3, 

Tamam, fd 3'te giriş bekliyor, bu yüzden ne olduğunu kontrol etmeye gittim:

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

Tamam, öyleyse bu bir boru ... şimdi soru - bu borunun yazarı kim? Linux'ta, "soyut soket ad alanına" erişmek için NUL bayt ile başlayan bir dosya yolu talep edebileceğiniz, unix alan soketleri için özel bir özellik olduğunu hatırlıyorum (burada belirtilen: http://tkhanson.net/cgit.cgi). /misc.git/plain/unixdomain/Unix_domain_sockets.html ). Borular için faydalanabileceğim benzer bir şey olup olmadığından emin değilim, ancak bir şey bulamadım.

Yardım edecek fuserya lsofda yardım edebilecek bir araç umuyordum ama hiçbir yere ulaşmadım.

Herhangi bir fikir?

Yanıtlar:


32

İşaret bağlantı içeriği "pipe: [20043922]" benzersiz bir kimlik kartıdır; borunun diğer ucu eşleşen bir ID'ye sahip olacaktır.

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

borunun her iki ucunu da göstermelidir.


1
İyi düşünce, teşekkürler! Soruşturma sırasında da bu konuya rastladım burada serverfault.com/questions/48330/… bu yüzden bağlantıyı buraya bırakmayı düşünüyorum, diğerleri için de sadece ffr.
FatalError,

2

Boruyu kullanarak işlemlerin listesini lsofkomut kullanarak alabilirsiniz :

lsof | grep 'FIFO.*20043922'

Çıktı okuyucular (1r gibi girişlerle FD sütununda) ve yazarları (2w gibi girişlerle aynı sütunlarda) gösterecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.