TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #109 661
logrotate: настройка ротации логов в Linux

Большие объёмы логов могут быстро заполнять дисковое пространство, затрудняя работу системы. Для автоматического управления логами в Linux используется инструмент logrotate. Он позволяет архивировать, удалять или сжимать старые файлы логов, оставляя только актуальные записи.

logrotate работает на основе конфигураций, определяя:

Частоту ротации (ежедневно, еженедельно, ежемесячно).
Количество архивов, которые нужно сохранять.
Сжатие логов для экономии пространства.
Выполнение пользовательских скриптов после ротации.


Настройка logrotate

1. Глобальный файл конфигурации:


Находится по пути /etc/logrotate.conf. Он задаёт общие параметры ротации.

Пример содержимого:


weekly # Ротация раз в неделю
rotate 4 # Хранить 4 архивных файла
create # Создавать новый файл после ротации
compress # Сжимать логи с помощью gzip
include /etc/logrotate.d/ # Подключение дополнительных конфигураций


2. Пользовательские настройки для приложений:

Каждое приложение может иметь свой файл конфигурации в /etc/logrotate.d/.

Пример для файла /etc/logrotate.d/nginx:


/var/log/nginx/*.log {
daily # Ротация логов каждый день
missingok # Пропускать файлы, если их нет
rotate 7 # Хранить 7 архивов
compress # Сжимать архивы
delaycompress # Откладывать сжатие на следующий цикл
notifempty # Пропускать пустые файлы
create 0640 www-data adm # Создавать новый лог с указанными правами
postrotate # Выполнять команду после ротации
systemctl reload nginx > /dev/null
endscript
}


Пример настройки ротации пользовательских логов

Допустим, у нас есть приложение, которое пишет логи в /var/log/myapp/. Мы хотим:

Ротировать логи ежедневно.
Сохранять последние 5 архивов.
Сжимать архивы.
Перезапускать приложение после ротации.


Для этого создайте файл /etc/logrotate.d/myapp:


/var/log/myapp/*.log {
daily
rotate 5
compress
missingok
notifempty
create 0640 root root
postrotate
systemctl restart myapp
endscript
}


Проверка работы logrotate

Запустите тест ротации:


logrotate -d /etc/logrotate.conf


Опция -d выводит информацию о предстоящих действиях без выполнения.

Принудительно выполните ротацию:


logrotate -f /etc/logrotate.conf


Проверьте результат: После выполнения команда должна создать сжатые файлы логов, например:


/var/log/myapp/myapp.log.1.gz
/var/log/myapp/myapp.log.2.gz


Советы по безопасности

Убедитесь, что права доступа к логам соответствуют требованиям.
Используйте create в конфигурации для автоматического создания новых файлов с нужными правами.
Регулярно проверяйте дисковое пространство, чтобы старые логи не заполняли диск.


BashTex 📱 #linux #utils
  • 👍 13
More from @bash_tex
  1. Oct 14, 2026coproc: как Bash общается с фоновым процессом в обе стороны Обычно Bash запускает фоновый…
  2. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  3. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  4. Oct 9, 2026BashTex 📱 #мем
  5. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  6. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →