Linux Labs

Пакеты, службы, журналы / Ступень 12 из 13

Ротация и хранение журналов

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 9 · теория · 6 мин

Как устроена ротация

Ротация переименовывает лог и заводит новый. Правило говорит, когда это делать и что делать со старыми файлами.

logrotate при ротации переименовывает app.log в app.log.1, прежний app.log.1 — в app.log.2 и так далее, а лишние старые удаляет. Затем создаёт новый пустой app.log, и программа пишет уже в него. Правило из упражнения:

text
/var/log/lab-rotate/app.log {
    size 1k
    rotate 2
    missingok
    notifempty
    nocompress
    create 0640 student student
}

size 1k — вращать, когда файл больше килобайта. rotate 2 — хранить два старых файла. missingok — не считать ошибкой, если лога нет, notifempty — пустой лог не вращать. nocompress — не сжимать старые файлы. create — с какими правами, владельцем и группой создать новый лог.

Системные правила лежат в /etc/logrotate.d/. Раз в сутки их выполняет служба logrotate.service по таймеру logrotate.timer, и условие вроде size проверяется именно в этот момент. Когда и что вращали, logrotate помнит в файле состояния: у системных правил это /var/lib/logrotate/status, у правила из урока — свой /srv/rotate-lab/state. Ключ --force вращает лог сразу, без проверки условий.

Проверь себя 1 вопрос

Лог с правилом size 1k в /etc/logrotate.d перерос порог в 10:00. Когда его повернут?

  • logrotate за файлами не следит: условие size он проверяет, когда его запускают. Время запуска показывает systemctl list-timers logrotate.timer.

  • --force вращает сразу и без условий, но и без него ротация будет: таймер запустит logrotate, и тот увидит, что лог больше 1k.

Системные правила выполняет logrotate.timer раз в сутки, и size проверяется в этот момент. До запуска лог может вырасти намного больше порога.

Главное в шаге

  • Ротация переименовывает лог в .1, сдвигает старые и создаёт новый файл.
  • Правило задаёт условие, число старых файлов, сжатие и владельца нового лога.
  • Системные правила выполняет logrotate.timer раз в сутки, --force вращает сразу.
Ubuntu 24.04
Загрузка…