Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In Linux if you go digging in /proc/<pid>/fd often you'll see output like:

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]

How do I get more info about the open pipes, such as which process is on the other end?

share|improve this question
lsof, of finding in whole /proc is slow. Can someone provide a more effective solution? – pihentagy May 14 '14 at 14:09
up vote 26 down vote accepted

Similiar to other answers, but:

lsof | grep 90222668

Will show you both ends, because both ends share the 'pipe number'.

share|improve this answer
Ah, of course. Works as expected. You can even tell the file descriptor number and which end is the reader and which is the writer by looking at the 4th column of output! – Kamil Kisiel Jul 31 '09 at 18:07
I think that number might be the inode number of the pipe for pipefs which you can't mount. I am looking for a way to get inode to filename mappings, but this might be the best way. By the way, I love this question :-) – Kyle Brandt Jul 31 '09 at 18:24
Somehow this is not working for me. All it outputs is the pipe itself. – Rui Marques Mar 17 '14 at 10:23
running lsof as standard user may not give you information from all processes. Usually you don't have permission to see all processes' /proc/<pid>/fd directory as a non-root user. – Andre Holzner Jun 3 at 10:35

The only way to find what process is on the other end is by looping over all processes in /proc and seeing which are using that pipe (ie, which have symlinks in /proc/pid/fd to the same pipe ID)

share|improve this answer
Thanks for the tip. One way to automate this is: ls -l /proc/*/fd/ | grep $PIPE_ID; ls -l /proc/*/fd/$FD | grep $PIPE_ID The first ls command will print the file descriptors of both ends of the pipe, while the second will give you the process id – Joao Costa Jan 25 at 9:17

The most information I know how to get on open pipes is

lsof|grep FIFO

Still only tells about one end of it, I'm afraid.

share|improve this answer
That's about the same as I can divine from /proc, I assume lsof gets it from the same location. – Kamil Kisiel Jul 30 '09 at 22:41

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.