我们检测到 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 脚本可以用于查找文件系统上的活动:
答案2
文件路径应该出现在您发布的行之后。如果不存在,则可能已在之前被删除。
答案3
您可以查找导致文件句柄 268 的 open() 调用,并查看调用它的参数。
我不熟悉 Solaris 的 /proc 文件系统的细节,但 Linux 下的 /proc/fd/ 有一个打开的文件描述符列表以及它们正在打开的内容;如果 Solaris 有类似的东西,那可能会有所帮助。