从 pfiles 输出获取打开文件路径

从 pfiles 输出获取打开文件路径

我们检测到 Solaris 10 进程中的性能问题,并观察到使用对描述符 268 进行了过多的写入truss

我们手头没有lsof,但是这里有输出的摘录pfiles

 [...]
 268: S_IFREG mode:0644 dev:321,11003 ino:13621 uid:101 gid:105 size:100014416
      O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE
 [...]

有没有办法从这些信息中知道真实的文件路径?

谢谢。

答案1

伊诺value 是文件系统上文件的 inode,在您的情况下为 13621,因此您可以使用find-inum 选项,如下所示(其中 $filesystem_name 是您的机器上的文件系统:

find /$filesystem_name -inum 13621

每个文件系统的 Inode 都是唯一的,因此如果您有多个文件系统,您可能需要单独检查它们。

网络上有一些很好的 dtrace 脚本可以用于查找文件系统上的活动:

http://forums.sun.com/thread.jspa?threadID=5075136

答案2

文件路径应该出现在您发布的行之后。如果不存在,则可能已在之前被删除。

答案3

您可以查找导致文件句柄 268 的 open() 调用,并查看调用它的参数。

我不熟悉 Solaris 的 /proc 文件系统的细节,但 Linux 下的 /proc/fd/ 有一个打开的文件描述符列表以及它们正在打开的内容;如果 Solaris 有类似的东西,那可能会有所帮助。

相关内容