Logrotate дубликатов файлов - PullRequest
       16

Logrotate дубликатов файлов

0 голосов
/ 19 февраля 2019

У меня есть тестовое приложение, которое запускается каждый час и использует уникальный файл журнала при каждом выполнении.Для очистки журналов была установлена ​​следующая конфигурация logrotate:

{
        # Daily rotation with 1 week of backlog
        daily
        rotate 7
        maxage 7
        dateext
        compress
}

Первый день, когда файл журнала сжимался (что нормально), но оставался пустой файл, а каждый второй день, когда файлы «очищались», исжат.И это составляет 6 файлов из каждого файла журнала, который заполняет таблицу инодов FS.Вот два примера:

-rw-r--r-- 1 root root 1752 Feb 11 01:36 J20190211013601_Status.txt-20190212.gz
-rw------- 1 root root   20 Feb 12 03:33 J20190211013601_Status.txt-20190213.gz
-rw------- 1 root root   20 Feb 13 03:37 J20190211013601_Status.txt-20190214.gz
-rw------- 1 root root   20 Feb 14 03:10 J20190211013601_Status.txt-20190215.gz
-rw------- 1 root root   20 Feb 15 03:12 J20190211013601_Status.txt-20190216.gz
-rw------- 1 root root   20 Feb 16 03:36 J20190211013601_Status.txt-20190217.gz
-rw------- 1 root root   20 Feb 17 03:44 J20190211013601_Status.txt-20190218.gz
-rw------- 1 root root    0 Feb 18 03:24 J20190211013601_Status.txt

-rw-r--r-- 1 root root 1752 Feb 11 02:36 J20190211023601_Status.txt-20190212.gz
-rw------- 1 root root   20 Feb 12 03:33 J20190211023601_Status.txt-20190213.gz
-rw------- 1 root root   20 Feb 13 03:37 J20190211023601_Status.txt-20190214.gz
-rw------- 1 root root   20 Feb 14 03:10 J20190211023601_Status.txt-20190215.gz
-rw------- 1 root root   20 Feb 15 03:12 J20190211023601_Status.txt-20190216.gz
-rw------- 1 root root   20 Feb 16 03:36 J20190211023601_Status.txt-20190217.gz
-rw------- 1 root root   20 Feb 17 03:44 J20190211023601_Status.txt-20190218.gz
-rw------- 1 root root    0 Feb 18 03:24 J20190211023601_Status.txt

Как я могу это исправить, чтобы удалить файлы после сжатия

Спасибо за время и помощь,

1 Ответ

0 голосов
/ 06 июня 2019

Вот как должен работать logrotate;Ваша проблема связана с тем, что вы используете уникальные имена файлов при каждом запуске приложения.

Когда logrotate запускается в первый раз для каждого журнала, он перемещает файл журнала из «J20190211023601_Status.txt» в «J20190211023601_Status.txt-20190212.gz», а затем создает новый файл с именем J20190211023601_Status.txt .

Logrotate не имеет внутренней идеи, что эти имена файлов уникальны и, следовательно, никогда не будут заполняться снова;все, что он видит, - это журнал, который он вращал в прошлом, поэтому он должен быть повернут снова в соответствии с вашей конфигурацией.

Ваше самое простое решение здесь - передать директиву nocreate для этой регистрации;это предотвратит создание и последующее вращение нового файла журнала, сохраняя при этом 7-дневный возрастной предел для ранее повернутых файлов:

{
  daily
  maxage 7
  dateext
  compress
  nocreate      
}
...