Bagaimana saya bisa mendapatkan info lebih lanjut tentang open pipe show in / proc di Linux?


53

Di Linux jika Anda /proc/<pid>/fdsering menggali, Anda akan melihat output seperti:

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]

Bagaimana saya mendapatkan lebih banyak info tentang pipa terbuka, seperti proses mana yang ada di ujung lain?


Jadi, menemukan secara keseluruhan /procitu lambat. Bisakah seseorang memberikan solusi yang lebih efektif?
pihentagy

Jawaban:


46

Serupa dengan jawaban lain, tetapi:

lsof | grep 90222668

Akan menunjukkan kepada Anda kedua ujungnya, karena kedua ujungnya berbagi 'nomor pipa'.


3
Ah, tentu saja. Bekerja seperti yang diharapkan. Anda bahkan dapat memberi tahu nomor deskriptor file dan yang ujungnya adalah pembaca dan yang merupakan penulis dengan melihat kolom output ke-4!
Kamil Kisiel

Saya pikir angka itu mungkin nomor inode dari pipa untuk pipef yang tidak bisa kamu pasang. Saya mencari cara untuk mendapatkan inode ke pemetaan nama file, tetapi ini mungkin cara terbaik. Ngomong-ngomong, aku suka pertanyaan ini :-)
Kyle Brandt

Entah bagaimana ini tidak bekerja untuk saya. Semua outputnya adalah pipa itu sendiri.
Rui Marques

menjalankan lsof karena pengguna standar mungkin tidak memberikan Anda informasi dari semua proses. Biasanya Anda tidak memiliki izin untuk melihat direktori semua proses '/ proc / <pid> / fd sebagai pengguna non-root.
Andre Holzner

5
Juga, Anda mungkin ingin menggunakan lsof -n -P | grep 90222668untuk menghindari pencarian nama yang tidak perlu, yang akan mempercepatnya.
Wodin

4

Satu-satunya cara untuk menemukan proses apa yang ada di ujung lain adalah dengan mengulang semua proses di / proc dan melihat yang menggunakan pipa itu (yaitu, yang memiliki symlink di / proc / pid / fd ke ID pipa yang sama)


Terima kasih atas tipnya. Salah satu cara untuk mengotomatiskan ini adalah: ls -l /proc/*/fd/ | grep $PIPE_ID; ls -l /proc/*/fd/$FD | grep $PIPE_ID Perintah ls pertama akan mencetak file deskriptor dari kedua ujung pipa, sedangkan yang kedua akan memberi Anda id proses
Joao Costa

2

Informasi terbanyak yang saya tahu cara mendapatkan pipa terbuka adalah

lsof|grep FIFO

Masih hanya menceritakan tentang salah satu ujungnya, aku khawatir.


Itu hampir sama seperti yang saya dapat ilahi dari / proc, saya berasumsi dia mendapatkannya dari lokasi yang sama.
Kamil Kisiel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.