Это, наверное, безумно легко сделать, но я не могу найти ничего, имеющего отношение к теме. Я настраиваю собственный файл logrotate.conf для журналов в нашем сервисе. В рамках этого я хотел бы хранить журналы до 7 дней, сжимать все, что старше 7 дней, и удалять все, что старше 22 дней. Пока что я пытаюсь проверить, могу ли я переместить сжатые файлы в другой каталог, чтобы не загромождать основной каталог журнала.
Мои правила пока следующие:
/home/user1/logs/profile_service/*.log
{
daily
rotate 7
copytruncate
compress
postrotate
mv /home/user1/logs/profile_service/*.gz /home/user1/logs/archive/profile_service/
endscript
}
Я понимаю, что postrotate должен перемещать эти файлы .gz в каталог архива. Однако, когда я вручную запускаю logrotate:
logrotate -f /home/user1/logrotate.conf
Он вращает журналы и добавляет дату в файлы, но не может сжать журналы, и в архив ничего не попадает:
mv: cannot stat ‘/home/user1/logs/profile_service/*.gz’: No such file or directory
logrotate_script: line 2: compress: command not found
error: error running non-shared postrotate script for /home/user1/logs/profile_service/profile.log of '/home/user1/logs/profile_service/*.log
'
Когда я не включаю postrotate для перемещения файлов, файлы сжимаются нормально.
Пытаться lastaction
/endscript
На странице руководства:
Строки между lastaction и endcript (обе должны появляться в строках сами по себе) выполняются (с использованием / bin / sh) один раз после поворота всех файлов журнала, соответствующих шаблону с подстановочными знаками, после запуска сценария postrotate и только если хотя бы один журнал повернут. Эти директивы могут появляться только внутри определения файла журнала. В качестве первого аргумента скрипту передается весь шаблон. Если сценарий завершается с ошибкой, отображается только сообщение об ошибке (так как это последнее действие). См. Также первое действие.