在 Ubuntu 12.04 上我做了以下操作
- 统计一个文件
- 猫相同的文件
- 再次统计文件
- 5 分钟后再次 cat 该文件
- 统计文件
3. 中报告的访问时间反映了 2. 运行的时间点。但是,5. 处报告的访问时间与 2. 一致,而不是 4. 这是因为 Linux 在缓存之外提供文件并避免在第二个实例中进行磁盘访问吗?还有一种方法可以检索当前驻留在磁盘缓存中的文件列表?
答案1
缓存是透明的。它不会影响文件的元数据。文件的访问日期显示文件被读取的时间,而不管读取文件是否导致从磁盘读取。
默认情况下,Linux 不更新文件访问时间。 sine 内核 2.6.30 的默认挂载选项是relatime
,这会牺牲文件访问时间的实用性来换取少量的性能提升。看来您的文件系统是使用该relatime
选项安装的,因此第二次读取文件时没有更新其 atime。
答案2
元数据缓存通常与文件缓存不同。您可以使用 fincore 实用程序获取缓存文件的列表,请参阅:http://code.google.com/p/linux-ftools/。