当我们find
在linux中执行a时,我猜测内核会将结果存储到缓冲区/缓存中。假设一个小时后,文件夹和文件发生了一些更改,所以我的问题是,当我们执行下一步时find
:
i) 内核会得到存储在缓冲区/缓存中的错误的旧结果吗?
ii) 内核如何知道文件夹和文件已经发生了一些更改,并且它无法使用缓冲区/缓存中的结果?它是在新结果和旧结果之间进行比较吗?这不是会占用更多时间吗?如果不是,内核如何实现这样的智能选择?
iii)我们是否需要担心删除缓存(即echo 3 > /proc/sys/vm/drop_caches
:)来获取我们操作的最新结果find
?或者在某些情况下我们需要做这样的事情? (虽然我觉得我们不需要,但只是想确定一下)
iv) 假设有一种情况,某些 cron 脚本运行一个命令(可能是grep
一个非常大的文件),导致占用服务器的大部分资源。我们终止该进程并截断该大文件。该 cron 作业会在几分钟后再次运行。我们是否需要删除缓冲区/缓存以避免下次grep
获取存储在其中的巨大文件内容结果以避免再次挂起服务器? (很抱歉,如果这个问题对你来说听起来太愚蠢了)