如何找出本地套接字另一端的程序?

daf*_*daf 18 sockets linux debugging

我的Linux系统上的一个进程,strace告诉我,正在讨论一个带有文件描述符10的套接字.lsof告诉我这是一个带有inode 11085的unix套接字,而netstat进一步告诉我inode 11085是一个流套接字,而且它是连接的.

鉴于此进程没有任何其他线程,因此系统上必须有另一个连接到此套接字另一端的进程.我怎么知道它是什么?

更新:

有从lsof的笔者的一些照明在这里.从本质上讲,Linux似乎并不提供这些信息.

use*_*374 11

ss -p
Run Code Online (Sandbox Code Playgroud)

会告诉.(如果套接字不归内核本身所有.)


HaB*_*LeS 7

netstat -p帮助吗?

来自Manpage:

  -p,
  --program Show the PID and name of the program to which each socket belongs.
Run Code Online (Sandbox Code Playgroud)


Lan*_*son 5

这个怎么样:grep 11085 /proc/net/unix。假设您感兴趣的 inode 所在的行上存在一条非空路径,则grep该路径/proc/net/unix将查找连接另一端的 inode,然后使用 @efficientjelly 的方法将另一个 inode 映射到pid.

这里的一个关键点是两个连接的套接字每个都有不同的 inode 编号。