Ответ
logrotate — это стандартная утилита в Linux для автоматического управления лог-файлами: их ротации, сжатия, удаления и оповещения сервисов. Она предотвращает заполнение диска логами и упрощает их архивирование.
Основные функции:
- Ротация: Переименование текущего лог-файла (например,
app.log->app.log.1) и создание нового пустого. - Сжатие: Архивация старых логов с помощью
gzip,bzip2илиxzдля экономии места. - Удаление: Автоматическое удаление логов старше заданного срока или сверх лимита версий.
- Уведомление сервисов: Выполнение скриптов (
postrotate) для переоткрытия лог-файлов работающими демонами (например,nginx -s reload).
Типичная конфигурация в /etc/logrotate.d/myapp:
/var/log/myapp/*.log {
daily # Ротировать ежедневно
missingok # Не выдавать ошибку, если файл отсутствует
rotate 30 # Хранить 30 архивных копий
compress # Сжимать архивы (gzip)
delaycompress # Сжимать не сразу, а со следующей ротации
notifempty # Не ротировать пустые файлы
create 0644 appuser appgroup # Создавать новый файл с указанными правами и владельцем
sharedscripts # Выполнять скрипты один раз для всей группы файлов
postrotate # Скрипт, выполняемый после ротации
/usr/bin/systemctl reload myapp.service > /dev/null 2>&1 || true
endscript
}
Ключевые директивы:
- Триггеры:
daily,weekly,monthly,size 100M(при достижении размера). - Управление архивами:
rotate N,maxage N(удалять файлы старше N дней). - Сжатие:
compress,compresscmd,compressext.
Практическое использование:
- Проверка конфигурации:
logrotate -d /etc/logrotate.conf(тестовый прогон). - Принудительный запуск:
logrotate -vf /etc/logrotate.d/myapp. - Для отладки проблем с ротацией (например, сервис не переоткрыл логи) первым делом проверяются скрипты в
postrotateи права доступа к создаваемым файлам (create).