Linux'ta açık / proc show açık borular hakkında nasıl daha fazla bilgi alabilirim?


53

Linux'ta /proc/<pid>/fdsık sık araştırmaya başlarsanız, şöyle çıktılar görürsünüz:

lrwx------ 1 root root 64 Jul 30 15:14 0 -> /dev/null
lrwx------ 1 root root 64 Jul 30 15:14 1 -> /dev/null
l-wx------ 1 root root 64 Jul 30 15:14 10 -> pipe:[90222668]
lr-x------ 1 root root 64 Jul 30 15:14 11 -> pipe:[90222669]
l-wx------ 1 root root 64 Jul 30 15:14 13 -> pipe:[90225058]
lr-x------ 1 root root 64 Jul 30 15:14 14 -> pipe:[90225059]

Açık boru hakkında, diğer ucunda hangi işlem olduğu gibi daha fazla bilgi edinebilirim?


Bu yüzden, bulmak tamamen /procyavaştır. Birisi daha etkili bir çözüm sağlayabilir mi?
pihentagy

Yanıtlar:


46

Diğer cevaplara benzer, ancak:

lsof | grep 90222668

Her iki ucu da gösterecektir, çünkü her iki uç da 'boru numarasını' paylaşıyor.


3
Ah, elbette. Beklendiği gibi çalışır. Hatta çıktı tanımlamasının 4. sütununa bakarak dosya tanımlayıcı numarasını ve hangisinin okuyucunun ve yazıcının hangisinin olduğunu bile söyleyebilirsiniz.
Kamil Kisiel

Bence bu sayı, monte edemediğiniz boruların inode numarası olabilir. Dosya adı eşlemeleri için inode almanın bir yolunu arıyorum, ancak bu en iyi yol olabilir. Bu arada, ben bu soruyu seviyorum :-)
Kyle Brandt

Her nasılsa bu benim için çalışmıyor. Tek çıktığı borunun kendisi.
Rui Marques

lsof'u standart kullanıcı olarak kullanmak, tüm işlemlerden size bilgi vermeyebilir. Genellikle tüm işlemlerin '/ proc / <pid> / fd dizinini root olmayan bir kullanıcı olarak görme izniniz yoktur.
Andre Holzner

5
Ayrıca, lsof -n -P | grep 90222668onu hızlandırması gereken gereksiz ad aramalarını önlemek için kullanmak isteyebilirsiniz .
Wodin

4

Hangi ucun diğer ucunda olduğunu bulmanın tek yolu, / proc içindeki tüm işlemlerin üzerinden dolaşmak ve bu boruyu hangisinin kullandığını görmek (yani, aynı boru kimliğine / proc / pid / fd içinde sembolik bağlantılar olan) görmektir.


Bahşiş için teşekkürler. Bunu otomatikleştirmenin bir yolu: ls -l /proc/*/fd/ | grep $PIPE_ID; ls -l /proc/*/fd/$FD | grep $PIPE_ID İlk ls komutu, borunun her iki ucunun dosya tanımlayıcılarını yazdıracak, ikincisi size işlem kimliğini verecek
Joao Costa

2

Açık borulara nasıl gireceğimi bildiğim en fazla bilgi

lsof|grep FIFO

Hala bunun sadece bir ucunu anlatıyor, korkarım.


Bu, / proc dan ilahi edebileceğimle aynı, sanırım aynı yerden aldığını sanıyorum.
Kamil Kisiel
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.