从pfiles输出获取打开的文件path

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

我们手边没有这些东西,但是这里是一个文件输出的摘录:

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

有没有办法从这个信息知道真正的文件path?

谢谢。

ino值是文件系统上的文件的inode,在你的情况下,你可以使用find的-inum选项,例如$ filesystem_name是你的机器上的一个文件系统:

 find /$filesystem_name -inum 13621 

Inode对于每个文件系统都是唯一的,所以如果你有多个文件系统,你可能需要单独检查它们。

在网上有一些很好的dtrace脚本来查找文件系统上的活动:

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

文件path应该显示在你发布的行后面。 如果它不在那里,它很可能早就被删除了。

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

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