lsof命令如何在linux上获取其信息

时间:2014-10-08 11:40:38

标签: linux

lsof命令功能强大,列出打开的文件包括网络连接。

我认为它应该像其他系统工具一样,从linux系统的/proc/ , /dev/ or /sys等位置收集信息。

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

ls /proc/self/fd
ls /proc/net/tcp
ls /dev/fd/

所以,我想知道lsof如何获取其信息。

希望你能告诉我这个谜团:)

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用以下命令获取多个信息:

  • / proc / PID / maps(包含当前映射的内存区域和 他们的访问权限)
  • / proc / PID / status(获取进程的状态信息)
  • / proc / PID / smaps(是基于地图的扩展,显示内存 每个流程映射的消耗量)
  • / proc / meminfo(提供有关内存分配和利用的信息)
  • / proc / vmallocinfo(提供有关vmalloced / vmaped区域的信息)
  • / proc / net / dev(可以使用此信息查看可用的网络设备 您的系统以及通过这些设备路由的流量量)
  • / proc / net(tcp,udp,tcp6,udp6,igmp,ecc)

答案 1 :(得分:0)

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

<块引用>

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

该文档提供了大量有关该程序如何工作的信息。