如何获取有关 Linux 中 /proc 中显示的打开管道的更多信息?

Kam*_*iel 61 linux pipe

在 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]
Run Code Online (Sandbox Code Playgroud)

如何获取有关开放管道的更多信息,例如另一端是哪个进程?

Kyl*_*ndt 53

类似于其他答案,但是:

lsof | grep 90222668
Run Code Online (Sandbox Code Playgroud)

将向您显示两端,因为两端共享“管道号”。

  • 另外,您可能想使用`lsof -n -P | grep 90222668` 以避免不必要的名称查找,这应该会加快速度。 (6认同)
  • 啊,当然。按预期工作。您甚至可以通过查看输出的第 4 列来判断文件描述符编号以及哪一端是读取器,哪一端是写入器! (4认同)

bdo*_*lan 5

查找另一端进程的唯一方法是循环 /proc 中的所有进程并查看哪些进程正在使用该管道(即,哪些进程在 /proc/pid/fd 中具有指向同一管道 ID 的符号链接)