Руководство по командам Logrotate с примерами

Эффективное управление файлами журналов - важная задача для системного администратора Linux.

linux

В этой статье мы рассмотрим, как выполнять следующие операции с файлами журнала с помощью утилиты UNIX logrotate.

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

Конфигурационные файлы Logrotate

Ниже перечислены основные файлы, которые необходимо знать для правильной работы logrotate.

  • /usr/sbin/logrotate - сама команда logrotate.
  • /etc/cron.daily/logrotate - Этот сценарий оболочки выполняет команду logrotate каждый день.

 

/etc/logrotate.conf - конфигурация ротации журнала для всех файлов журнала задается в этом файле.

/etc/logrotate.d - Когда отдельные пакеты устанавливаются в систему, они сбрасывают информацию о конфигурации ротации журнала в этот каталог. Например, конфигурационная информация yum log rotate показана ниже.

Опция размера Logrotate: Ротация файла журнала, когда размер файла достигает определенного предела

Если вы хотите ротировать файл журнала (например, /tmp/output.log) на каждый 1 КБ, создайте файл logrotate.conf, как показано ниже.

Эта конфигурация logrotate имеет следующие три опции:

  • size 1k - logrotate запускается, только если размер файла равен (или больше) этому размеру.
  • create - ротировать исходный файл и создавать новый файл с указанным разрешением, пользователем и группой.
  • rotate - ограничивает количество ротаций файла журнала. Таким образом, будут сохранены только последние 4 ротированных файла журнала.

Теперь запустите команду logrotate, как показано ниже. Опция -s указывает имя файла для записи состояния logrotate.

$ logrotate -s /var/log/logstatus logrotate.conf

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

Пожалуйста, помните, что после ротации журнала, файл журнала, соответствующий службе, будет по-прежнему указывать на ротированный файл (output.log.1) и продолжать писать в него. Вы можете использовать описанный выше метод, если хотите ротировать apache access_log или error_log каждые 5 МБ.

В идеале, вы должны изменить файл /etc/logrotate.conf, чтобы указать информацию logrotate для конкретного файла журнала.

Опция Logrotate copytruncate: Продолжайте записывать информацию журнала во вновь созданный файл после ротации старого файла журнала.

copytruncate указывает logrotate создать копию оригинального файла (т.е. ротировать оригинальный файл журнала) и усечь оригинальный файл до размера ноль байт. Это помогает соответствующему сервису, принадлежащему данному файлу журнала, записывать данные в нужный файл.

Опция сжатия Logrotate: Сжать ротированне файлы журнала

Если вы используете опцию compress, как показано ниже, ротированные файлы будут сжаты с помощью утилиты gzip.

Опция Logrotate dateext: Ротация старого файла журнала с датой в имени файла журнала

После вышеуказанной конфигурации вы заметите дату в ротированном файле журнала.

Это сработает только один раз в день. Потому что когда он попытается выполнить ротацию в следующий раз в тот же день, ранее ротированный файл будет иметь то же имя. Таким образом, logrotate не будет успешным после первого запуска в тот же день.

Опция Logrotate monthly, daily, weekly: Ротировать файл журнала еженедельно/ежедневно/ежемесячно

Для выполнения ротации ежемесячно один раз

Добавьте ключевое слово weekly, как показано ниже, для еженедельной ротации журнала.

Добавьте ключевое слово daily, как показано ниже, для ежедневной ротации журналов. Вы также можете ротировать журналы ежечасно.

Опция Logrotate postrotate endscript: Запуск пользовательских сценариев оболочки сразу после ротации журнала

Logrotate позволяет запускать собственные пользовательские сценарии оболочки после завершения ротации файлов журнала. Следующая конфигурация указывает, что после ротации журнала будет выполняться script.sh.

Опция Logrotate maxage: Удаление старых ротированных файлов журнала

Logrotate автоматически удаляет ротированные файлы через определенное количество дней. Следующий пример показывает, что ротированные файлы журнала будут удалены через 100 дней.

Опция Logrotate missingok: Не возвращать ошибку, если файл журнала отсутствует

Вы можете игнорировать сообщение об ошибке, если фактический файл недоступен, используя эту опцию, как показано ниже.

Logrotate compresscmd и опция compressext: Укажите команду сжатия для ротации файла журнала

Выше указаны следующие параметры сжатия:

  • compress - Указывает, что сжатие должно быть выполнено.
  • compresscmd - Указывает, какой тип команды сжатия должен быть использован. Например: /bin/bzip2
  • compressext - Указать расширение для ротированного файла журнала. Без этой опции ротированный файл будет иметь расширение по умолчанию .gz. Поэтому, если вы используете bzip2 compressioncmd, укажите расширение .bz2, как показано в примере выше.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий