SCROLL
Среднее время на прочтение: 1 мин.

Как использовать 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.

     

    ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

    Обсуждение

    0 комментариев

    Нет комментариев.