# logrotate

> Что делает logrotate, как работает его конфигурация в /etc/logrotate.conf и /etc/logrotate.d, а также как безопасно протестировать правило.

logrotate — это утилита Linux, которая выполняет ротацию, сжатие и удаление файлов журналов, чтобы они не переполняли диск. Обычно она запускается один раз в день с помощью таймера systemd или задания cron и считывает файл /etc/logrotate.conf, а также правила для отдельных пакетов в /etc/logrotate.d/.

## Типичное правило

Правило указывает один или несколько файлов журналов и директивы, такие как daily или weekly (частота), rotate 7 (сколько старых файлов хранить), compress (сжатие старых файлов с помощью gzip), missingok (отсутствие ошибки, если файл отсутствует), notifempty (пропуск пустых журналов) и postrotate ... endscript (команда, выполняемая после ротации, например, для повторного открытия журнала).

## copytruncate

Некоторые программы продолжают запись в один и тот же открытый файл. Параметр copytruncate копирует журнал, а затем усекает исходный файл вместо его перемещения, поэтому программа сохраняет свой дескриптор файла; несколько строк, записанных во время копирования, могут быть потеряны.

## Тестирование

Команда 'logrotate -d /etc/logrotate.conf' запускается в режиме отладки и только выводит информацию о том, что произойдет. Флаг '-f' принудительно выполняет ротацию, даже если срок еще не подошел.

## Как добавить и протестировать правило

1. Создайте файл /etc/logrotate.d/myapp с путем к журналу и директивами, например weekly, rotate 4, compress, missingok, notifempty.
2. Пробный запуск: sudo logrotate -d /etc/logrotate.d/myapp
3. Если вывод выглядит корректно, принудительно выполните одну ротацию: sudo logrotate -f /etc/logrotate.d/myapp
4. Проверьте результат: ls -l в каталоге журналов.

## Осторожно

- Неверный шаблон пути может привести к ротации или удалению журналов других программ.
- Журналы, управляемые systemd journal, ограничиваются в journald.conf, а не с помощью logrotate.

## Источники

- [logrotate(8)](https://man7.org/linux/man-pages/man8/logrotate.8.html)
- [logrotate(8) (Debian)](https://manpages.debian.org/bookworm/logrotate/logrotate.8.en.html)

Обновлено: 2026-10-08
URL: https://raincleaner.eu/ru/wiki/linux/logrotate
