Назад | Перейти на главную страницу

Есть ли стандартный инструмент для обрезки каталогов кеша?

Я хочу запустить задание cron, которое удаляет старые записи в каталоге кеша, чтобы его общий размер уменьшился до определенного количества байтов. Я придумал эту однострочную команду оболочки, но мне было интересно: есть ли стандартный инструмент Linux (например, logrotate для ротации журналов), который делает то же самое?

Oneliner выглядит следующим образом:

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

Я использую find для сбора метки времени, размера файла и пути к каждому файлу. Затем я сортирую по метке времени, сначала самые новые файлы. Затем я вычисляю совокупный размер файла, выводя файлы только после достижения определенного предела. Затем полученные файлы удаляются.

Я никогда не видел «стандартного» способа сделать это - потому что не существует «стандарта», когда дело доходит до того, как приложения кэшируют контент: продолжительность, общее используемое пространство и т. Д. Все зависит от конкретных методологий кэширования данного инструмента.

Что происходит, когда вы «обрезаете» то, что в настоящее время используется? Просто потому, что что-то было кэшировано некоторое время назад, это не значит, что это все еще не раздается ... и его легко можно было раздать пока вы пытаетесь его удалить - а это плохая жужжу.

В подавляющем большинстве случаев вам следует использовать диспетчер конфигурации приложения (будь то файл конфигурации, база данных и т. Д.) Для управления собственной стратегией кэширования.

Я могу назвать хотя бы один товар, где файл имена cached не имеют абсолютно никакого отношения к файлы сами: и только потому, что он был кэширован месяц назад, не означают, что он еще не используется, потому что приложение не обновляет временные метки в кешированных файлах - никогда. Он отслеживает внутри себя наименее недавно использованный доступ, а способ управления размером кеша - ограничить точку раздела / монтирования, в которой размещен кеш (поскольку он будет использовать до и включая все пространство, доступное в его каталоге кеша).

Не редактируйте кеши приложений, если вы действительно знать, что произойдет, когда вы это сделаете.