2012-09-05 82 views
5

有沒有辦法列出正在運行的linux進程(例如給定其pid或進程名稱)使用的管道並確定其使用容量?如何使用bash命令列出進程使用的管道

是這樣的:

lspipes -l -p pid 

導致類似:

[rw] descriptor size name 

其中RW是管端類型和大小是其使用的容量

或類似的東西

回答

10

1)ls -l /proc/pid/fd

這將列出管道

lr-x------ 1 prabagaran prabagaran 64 Sep 5 23:01 14 -> pipe:[57729] 
l-wx------ 1 prabagaran prabagaran 64 Sep 5 23:01 15 -> pipe:[57728] 
lr-x------ 1 prabagaran prabagaran 64 Sep 5 23:01 16 -> pipe:[57731] 
lr-x------ 1 prabagaran prabagaran 64 Sep 5 23:01 17 -> pipe:[57730] 

2)lsof | grep 57731

wineserve 3641 prabagaran 76w  FIFO  0,8  0t0 57731 pipe 
winedevic 3651 prabagaran 16r  FIFO  0,8  0t0 57731 pipe 

這些是與給定進程ID的管信息。

2

我真的不覺得有這樣的命令。你可以嘗試以下方法:

lsof -p PID | grep FIFO

其中PID代表進程ID,而FIFO代表什麼都沒有。你必須準確地寫入「FIFO」。可能有一個lsof開關只選擇管道並避開grep,但我現在無法在手冊頁中找到它。

它應該給你一些東西接近你要找的東西。

+0

FIFO [代表「先進先出」](http://www.linuxjournal.com/article/2156) – TML

+0

@TML,我知道......但他不需要在命令,因爲他應該用PID!:D這就是我的意思! – Zagorax