ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับ open pipes ได้อย่างไรแสดงใน / proc ใน Linux


53

ใน Linux ถ้าคุณเข้าไปขุด/proc/<pid>/fdบ่อยครั้งคุณจะเห็นผลลัพธ์เช่น:

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]

ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับไพพ์เปิดเช่นกระบวนการใดที่ปลายอีกด้านได้อย่างไร


lsof การค้นหาทั้งหมด/procช้า ใครบางคนสามารถให้โซลูชันที่มีประสิทธิภาพมากขึ้นได้ไหม
pihentagy

คำตอบ:


46

คุ้นเคยกับคำตอบอื่น ๆ แต่:

lsof | grep 90222668

จะแสดงให้คุณเห็นปลายทั้งสองเพราะปลายทั้งสองแบ่งปัน 'หมายเลขท่อ'


3
อ่าแน่นอน ทำงานได้ตามที่คาดหวัง คุณสามารถบอกหมายเลขตัวอธิบายไฟล์และจุดสิ้นสุดคือตัวอ่านและตัวเขียนตัวใดโดยดูที่คอลัมน์ที่ 4 ของเอาต์พุต!
Kamil Kisiel

ฉันคิดว่าหมายเลขนั้นอาจเป็นหมายเลขไอโหนดของไพพ์ไลน์ที่คุณไม่สามารถเมานต์ได้ ฉันกำลังมองหาวิธีที่จะได้รับ inode เพื่อการแมปชื่อไฟล์ แต่อาจเป็นวิธีที่ดีที่สุด โดยวิธีการที่ฉันรักคำถามนี้ :-)
ไคล์ Brandt

ยังไงก็เถอะมันไม่ได้ผลสำหรับฉัน ผลลัพธ์ทั้งหมดคือท่อเอง
Rui Marques

กำลังรัน lsof ในฐานะผู้ใช้มาตรฐานอาจไม่ให้ข้อมูลกับคุณจากกระบวนการทั้งหมด โดยปกติคุณจะไม่ได้รับอนุญาตให้ดูไดเรกทอรี / proc / <pid> / fd ของกระบวนการทั้งหมดในฐานะผู้ใช้ที่ไม่ใช่รูท
Andre Holzner

5
นอกจากนี้คุณอาจต้องการใช้lsof -n -P | grep 90222668เพื่อหลีกเลี่ยงการค้นหาชื่อที่ไม่จำเป็นซึ่งควรทำให้เร็วขึ้น
Wodin

4

วิธีเดียวที่จะค้นหาว่ากระบวนการใดอยู่ที่ปลายอีกด้านหนึ่งคือการวนซ้ำกระบวนการทั้งหมดใน / proc และเห็นว่ากำลังใช้ไพพ์นั้น (เช่นซึ่งมี symlinks ใน / proc / pid / fd ไปยัง pipe ID เดียวกัน)


ขอบคุณสำหรับทิป. วิธีหนึ่งในการทำให้สิ่งนี้เป็นแบบอัตโนมัติคือls -l /proc/*/fd/ | grep $PIPE_ID; ls -l /proc/*/fd/$FD | grep $PIPE_ID คำสั่ง ls แรกจะพิมพ์ตัวอธิบายไฟล์ที่ปลายทั้งสองของ
Joao Costa

2

ข้อมูลส่วนใหญ่ฉันรู้วิธีที่จะได้รับในท่อเปิดคือ

lsof|grep FIFO

ยังบอกเพียงแค่ปลายด้านหนึ่งของมันฉันกลัว


นั่นเป็นเรื่องเดียวกับที่ฉันสามารถทำนายจาก / proc ฉันคิดว่า lsof ได้มาจากที่เดียวกัน
Kamil Kisiel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.