С чего начать Первые шаги трек · 15 ступеней
Linux Labs
К статье

Ротация логов logrotate

шпаргалка · Ubuntu 24.04 https://lab.dimsanych.ru/ru/wiki/logrotate/

Шпаргалка

  • sudo logrotate -d /etc/logrotate.conf dry-run (ничего не меняет)
  • sudo logrotate -f /etc/logrotate.d/nginx форсировать сейчас
  • cat /var/lib/logrotate/status история ротаций
  • блок: daily|size / rotate N / compress / postrotate reload (или copytruncate) / su user group

Конфигурация

Глобально — /etc/logrotate.conf, по сервисам — /etc/logrotate.d/<service>:

/var/log/myapp/*.log {
    daily                 # как часто (daily/weekly/monthly) — или size 100M
    rotate 14             # хранить 14 копий
    compress              # сжимать старые (.gz)
    delaycompress         # не сжимать самый свежий ротированный (для дозаписи)
    missingok             # ок, если лога нет
    notifempty            # не ротировать пустые
    dateext               # суффикс датой (file-20260101) вместо .1
    create 0640 myapp myapp   # создать новый лог с этими правами/владельцем
    su myapp myapp            # под кем работать (если каталог не root)
    sharedscripts             # postrotate один раз на все файлы шаблона
    postrotate
        systemctl reload myapp >/dev/null 2>&1 || true
    endscript
}

Директивы

Директива Смысл
daily/weekly/monthly период
size 100M ротация по размеру (вместо/вместе с периодом)
rotate N сколько копий хранить
compress/delaycompress сжимать / отложить сжатие на цикл
copytruncate копировать и обнулить (если служба не умеет переоткрыть лог)
postrotate…endscript команда после ротации (reload службы)
maxage N удалять старше N дней

postrotate (reload/переоткрытие) или copytruncate нужны, чтобы служба начала писать в новый файл.

Загрузка…