lovespring Asked: 2015-04-12 08:56:21 +0800 CST2015-04-12 08:56:21 +0800 CST 2015-04-12 08:56:21 +0800 CST 如何跟踪/监视 Linux 命令的 I/O 772 我find / -name abc.html再次运行此命令后不久就运行了。这次速度非常快,所以我知道find一定是在某个地方缓存了结果。 如何找出缓存的存储位置? command-line 2 个回答 Voted Best Answer psusi 2015-04-12T10:10:17+08:002015-04-12T10:10:17+08:00 事实上,正如@zongfu 指出的那样,find它不会将其结果缓存在文件中,而是内核正在缓存find正在读取的目录,这样就可以在不接触磁盘的情况下再次读取它们,这就是它速度更快的原因。如果您仍想查看程序正在执行的 IO 类型,则可以使用strace. 该程序运行您指定的另一个程序并记录该程序进行的系统调用。如果没有任何参数,它将全部打印出来,这可能是很多信息,因此您希望将其限制为仅某些调用,例如open()您可以看到程序将打开哪些文件。这看起来像: strace -eopen someprogram zhongfu 2015-04-12T09:34:59+08:002015-04-12T09:34:59+08:00 find不缓存任何东西,尤其是在磁盘上。第二次运行速度快得多的原因是 Linux 将访问的数据(在本例中为目录列表)缓存在内存中(参见 参考资料free)。
事实上,正如@zongfu 指出的那样,
find
它不会将其结果缓存在文件中,而是内核正在缓存find
正在读取的目录,这样就可以在不接触磁盘的情况下再次读取它们,这就是它速度更快的原因。如果您仍想查看程序正在执行的 IO 类型,则可以使用strace
. 该程序运行您指定的另一个程序并记录该程序进行的系统调用。如果没有任何参数,它将全部打印出来,这可能是很多信息,因此您希望将其限制为仅某些调用,例如open()
您可以看到程序将打开哪些文件。这看起来像:find
不缓存任何东西,尤其是在磁盘上。第二次运行速度快得多的原因是 Linux 将访问的数据(在本例中为目录列表)缓存在内存中(参见 参考资料free
)。