Bạn có thể thấy đường ống trong /proc/$PID/fd
. Các mô tả là một liên kết tượng trưng cho một cái gì đó như pipe:[188528098]
. Với thông tin đó, bạn có thể tìm kiếm quy trình khác:
$ lsof -n | grep -w 188528098
sleep 1565 hl 1w FIFO 0,12 0t0 188528098 pipe
sleep 1566 hl 0r FIFO 0,12 0t0 188528098 pipe
Hoặc, nếu bạn muốn chắc chắn (để xử lý tự động) rằng số đó là ổ cắm và không phải là một phần của tên tệp:
$ lsof -n | awk 'NF==9 && $5=="FIFO" && $9=="pipe" && $8==188528098'
Với lsof
4,88 trở lên, bạn cũng có thể sử dụng -E
hoặc +E
cờ:
Kết hợp với -p <pid>
, -d <descriptor>
bạn có thể lấy thông tin điểm cuối cho một mô tả cụ thể của một pid cụ thể .
$ sleep 1 | sh -c 'lsof -E -ap "$$" -d 0; exit'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sh 27176 chazelas 0r FIFO 0,10 0t0 2609460 pipe 27175,sleep,1w
Ở trên cho chúng ta biết rằng fd
0 của sh
là một ống có fd 1 sleep
ở đầu kia. Nếu bạn đổi -E
thành +E
, bạn cũng có được thông tin đầy đủ cho fd đó sleep
:
$ sleep 1 | sh -c 'lsof +E -ap "$$" -d 0; exit'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep 27066 chazelas 1w FIFO 0,10 0t0 2586272 pipe 27067,sh,0r 27068,lsof,0r
sh 27067 chazelas 0r FIFO 0,10 0t0 2586272 pipe 27066,sleep,1w
(xem làm thế nào lsof
cũng có đường ống trên stdin của nó)