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

logrotate: сохранить N новейших файлов, но не переименовывать

У меня есть служба, которая автоматически создает файл журнала с отметкой времени в имени файла при запуске. Таким образом, мне не нужен logrotate для переименования / копирования / создания файлов, но я действительно хочу, чтобы logrotate сохранял только три самых новых из этих файлов (и при необходимости сжимал их). Могу я как-нибудь это сделать?

Я не уверен, что вы сможете это сделать, используя logrotate. Можете ли вы запускать следующее в качестве ежедневного задания cron:

rm $(ls -t | sed -e '1,3d')

Не думаю, что это можно сделать именно так, как вы хотите. Если вы хотите сначала использовать logrotate, вам нужно указать, как часто logrotate будет вращать ваш журнал (ежедневно / еженедельно / ежемесячно / ежегодно). Вы можете установить это так:

# rotate log files daily
daily

# Log files are rotated count times before being removed or mailed to the address
# specified in a mail directive. If count is 0, old versions are removed rather than 
# rotated.
rotate 3

# Old versions of log files are compressed with gzip(1) by default.
compress

Но, как написал @quanta, это, вероятно, невозможно сделать с помощью logrotate. Вы либо будете использовать аналогичные настройки, как я писал выше, либо вам, возможно, понадобится другой инструмент.