linux下lsof命令如何获取其信息

Chi*_*ing 9 linux

lsof命令可以列出打开的文件,包括网络连接。

我认为它应该像其他系统工具一样工作,从Linux 文件系统中的/proc//dev/或位置收集信息。/sys

但是当我尝试从这些位置查找有关打开文件的信息时,我失败了:

ls /proc/self/fd
ls /proc/net/tcp
ls /dev/fd/
Run Code Online (Sandbox Code Playgroud)

如何lsof获得这些信息?

rho*_*ard 5

我发现这个lsof 存储库包含一个移植指南,其中包含以下内容:

lsof 通过读取内核的 proc 结构信息,跟踪相关的用户结构,然后读取(通常)存储在用户结构中的打开文件结构来获取有关打开的 UNIX 方言文件的数据。通常 lsof 使用内核内存设备 /dev/kmem、/dev/mem 等来读取内核数据。

该文档包含大量有关该程序如何工作的信息。