如果我无法使用 lsof 命令,如何获取特定 pid 的活动 unix 域套接字?

如果我无法使用 lsof 命令,如何获取特定 pid 的活动 unix 域套接字?

如果我没有使用 lsof 的权限,如何获取 pid 已知的进程?谢谢

我知道netstat -l -p命令打印出活动的 unix 域套接字,但它似乎没有更新?关闭套接字后,它仍然显示在 netstat 命令结果中。

答案1

/proc在 Linux 上,您可以专门针对给定 PID 下的文件系统进行查找/proc/<pid>/fd。每个进程的所有文件描述符 (fd) 都在那里列出。

例子

$ ls -l /proc/27634/fd/
total 0
lrwx------ 1 root root 64 Mar 17 20:09 0 -> /dev/null
lrwx------ 1 root root 64 Mar 17 20:09 1 -> /dev/null
lrwx------ 1 root root 64 Mar 17 20:10 10 -> /dev/ptmx
lrwx------ 1 root root 64 Mar 17 20:10 12 -> /dev/ptmx
lrwx------ 1 root root 64 Mar 17 20:10 13 -> /dev/ptmx
lrwx------ 1 root root 64 Mar 17 20:09 2 -> /dev/null
lr-x------ 1 root root 64 Mar 17 20:09 3 -> socket:[430396]
l-wx------ 1 root root 64 Mar 17 20:09 4 -> socket:[430437]
lrwx------ 1 root root 64 Mar 17 20:09 5 -> pipe:[430440]
l-wx------ 1 root root 64 Mar 17 20:10 6 -> pipe:[430440]
lrwx------ 1 root root 64 Mar 17 20:10 7 -> socket:[430443]
lrwx------ 1 root root 64 Mar 17 20:10 8 -> socket:[430444]
lrwx------ 1 root root 64 Mar 17 20:10 9 -> socket:[430446]

那里列出的所有东西都是socket:[....]一个套接字。

相关内容