如何跟踪/监控 Linux 命令的 I/O

如何跟踪/监控 Linux 命令的 I/O

我运行了find / -name abc.html该命令,不久之后我又运行了该命令。这次运行速度非常快,所以我知道它find一定在某处缓存了结果。

我如何才能知道缓存存储在哪里?

答案1

确实,正如 @zongfu 指出的那样,find它不会将其结果缓存在文件中,而是内核缓存正在find读取的目录,以便可以再次读取它们而无需接触磁盘,这就是它更快的原因。但是,如果您仍然想查看程序正在执行哪种 IO,则可以使用strace。此程序运行您指定的另一个程序并记录程序所做的系统调用。如果不使用任何参数,它将打印所有参数,这可能会包含大量信息,因此您可能希望将其限制为仅某些调用,例如,这样open()您就可以看到程序将要打开哪些文件。这看起来像:

strace -eopen someprogram

答案2

find不缓存任何内容,尤其是不缓存到磁盘上。第二次运行速度快得多的原因是 Linux 将访问的数据(本例中为目录列表)缓存在内存中(请参阅free)。

相关内容