Как использовать logrotate в Linux
logrotate
— это утилита для автоматической ротации, сжатия, удаления и управления лог-файлами. Она полезна для систем, где лог-файлы могут быстро увеличиваться в размере, создавая нагрузку на диск.
Конфигурация logrotate
состоит из двух частей:
- Основной файл:
/etc/logrotate.conf
— глобальные настройки. - Каталог
/etc/logrotate.d/
— файлы с настройками для отдельных сервисов.
Основные параметры
Параметр | Описание |
---|---|
daily | Ротация логов ежедневно. |
weekly | Ротация логов раз в неделю. |
monthly | Ротация логов раз в месяц. |
rotate N | Хранение N архивных копий логов. |
size X | Ротация при достижении размера X (например, 100M ). |
compress | Сжатие архивированных логов (gzip по умолчанию). |
delaycompress | Откладывание сжатия на один цикл. |
missingok | Не выдавать ошибку, если лог-файл отсутствует. |
notifempty | Не ротировать пустые файлы. |
copytruncate | Обрезка текущего лог-файла после копирования (без перезапуска сервиса). |
postrotate … endscript | Выполнение команды после ротации (обычно перезапуск службы). |
Пример конфигурации
Допустим, у нас есть лог-файл /var/log/squid/access.log
, и мы хотим:
- Ротировать его ежедневно.
- Хранить 7 архивных копий.
- Сжимать старые логи.
- Перезапускать сервис после ротации.
Создаём файл /etc/logrotate.d/squid
:
/var/log/squid/access.log {
daily
rotate 7
compress
missingok
notifempty
postrotate
systemctl restart squid
endscript
}
Запуск logrotate
Вручную
Проверить работу конфигурации без внесения изменений:
logrotate -d /etc/logrotate.conf
Принудительно выполнить ротацию:
logrotate -f /etc/logrotate.conf
Автоматический запуск
logrotate
обычно вызывается через cron
. Для ежедневного выполнения в /etc/cron.daily/
создаётся скрипт:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
Можно также добавить задание в crontab
:
0 3 * * * /usr/sbin/logrotate /etc/logrotate.conf
Это запустит logrotate
каждый день в 03:00.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.