Как использовать 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.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.