有没有一个标准的工具来修剪caching目录?

我想运行一个cron作业,删除caching目录中的旧条目,使其总大小减less到一定的字节数。 我炮制了这一行shell命令,但我想知道:是否有一个标准的Linux工具(如旋转日志logrotate)相同?

内线如下:

find /some/cache/dir -type f -printf "%T@ %s %p\n" | sort -rn | awk '{ s += $2 ; if (s > 100000) print $3 }' | xargs rm 

我使用find来收集每个文件的时间戳,文件大小和文件path。 然后我按时间戳sorting,最新的文件。 然后我计算累计文件大小,只有达到一定限制后才会输出文件。 输出的文件然后被删除。

我从来没有见过这样做的“标准”方式,因为在应用程序如何caching内容方面没有“标准”:持续时间,使用的总空间等等都依赖于给定工具的特定caching方法。

当您“修剪”当前正在使用的内容时会发生什么? 仅仅因为某些东西被caching了,并不意味着它还没有被分发出去,而且你试图删除它的时候 ,它很容易被分发出去。

在绝大多数情况下,您应该使用应用程序的configurationpipe理器(无论是configuration文件,数据库等)来pipe理自己的caching策略。

至less在文件caching与文件本身无关的情况下,我可以命名一个产品:仅仅因为它在一个月前被caching了, 并不意味着它还没有被活跃使用,因为应用程序不更新时间戳在caching的文件 – 永远。 它跟踪自己内部最近最less访问的内容,pipe理caching大小的方法是限制caching所在的分区/安装点(因为它将使用最多可用的caching目录中的整个空间)。

不要编辑应用程序的caching,除非你真的知道当你这样做会发生什么。