我试图追踪一些进程的一些奇怪行为,但遇到了一个我不知道如何追踪过去的问题。我附加到使用的挂起进程strace -p显示了这一点:
Process 7926 attached - interrupt to quit
read(3,
Run Code Online (Sandbox Code Playgroud)
好的,所以它正在等待 fd 3 的输入,所以我去检查它是什么:
$ ls -l /proc/7926/fd/3
lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922]
Run Code Online (Sandbox Code Playgroud)
好的,所以这是一个烟斗……现在的问题是——这个烟斗的作者是谁?我记得在 Linux 上有一个 unix 域套接字的特殊功能,您可以请求一个以 NUL 字节开头的文件路径来访问“抽象套接字命名空间”(这里提到:http : //tkhanson.net/cgit.cgi /misc.git/plain/unixdomain/Unix_domain_sockets.html)。我不确定我可以利用的管道是否有类似的东西,但我没有找到任何东西。
我希望有一个类似fuser或lsof可能会有所帮助的工具,但我什么也没得到。
有任何想法吗?
Kyl*_*nes 38
符号链接内容“pipe:[20043922]”是唯一ID;管道的另一端将有一个匹配的 ID。
(find /proc -type l | xargs ls -l | fgrep 'pipe:[20043922]') 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
应该显示管道的两端。
您可以使用以下命令获取使用管道的进程列表lsof:
lsof | grep 'FIFO.*20043922'
输出将显示读者(在 FD 列中,具有 1r 等条目)和作者(同一列中,具有 2w 等条目)。
| 归档时间: |
|
| 查看次数: |
20219 次 |
| 最近记录: |