Logrotate — стандартный инструмент Linux для управления лог-файлами. Автоматически архивирует, сжимает и удаляет старые логи по расписанию.
Как работает logrotate
- Запускается через cron (
/etc/cron.daily/logrotate) - Читает конфиги из
/etc/logrotate.confи/etc/logrotate.d/ - Для каждого лога применяет правила: rotate, compress, delete
Конфиг для Nginx
sudo nano /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
nginx -s reopen
endscript
}
Конфиг для вашего приложения
sudo nano /etc/logrotate.d/myapp
/var/www/myapp/logs/*.log {
weekly
rotate 8
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
}
Тестирование и запуск
# Тест без реального выполнения
sudo logrotate -d /etc/logrotate.d/nginx
# Принудительный запуск
sudo logrotate -f /etc/logrotate.conf
# Проверить статус
sudo cat /var/lib/logrotate/status
| Директива | Значение |
|---|---|
| daily/weekly/monthly | Частота ротации |
| rotate N | Хранить N архивов |
| compress | Сжимать gzip |
| missingok | Не ошибаться если файл отсутствует |
✅ Проверяйте свободное место командой
df -h. Если /var заполнен — запустите logrotate -f /etc/logrotate.conf принудительно.