У меня есть служба, которая автоматически создает файл журнала с отметкой времени в имени файла при запуске. Таким образом, мне не нужен 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. Вы либо будете использовать аналогичные настройки, как я писал выше, либо вам, возможно, понадобится другой инструмент.