logrotate ()

NAME

logrotate - ротация, архивирование и почтовая пересылка логов

SYNOPSIS

logrotate [-dv] [-f|--force] [-s|--state file] config_file+

ОПИСАНИЕ

logrotate создано для упрощения администрирования систем, создающих большое количество лог-файлов. Оно позволяет автоматизировать ротацию, сжатие, удаление и отправку по почте лог-файлов. Каждый лог-файл может быть обработан каждый день, неделю, месяц и когда становится слишком большим. Обычно, logrotate запускается как ежеднесное задание сron. Оно не будет изменять лог несколько раз в день, за исключением случаев, когда критерием является размер лог-файла и logrotate будет запускать несколько раз, или если используется опция -f (-force). В командной строке может быть передано любое количество конфигов. Опции в более поздних конфиг-файлах могут превалировать над опциями с более ранних, так что необходимо внимательно относиться к порядку инструкцииso в каждом конфиг-файле logrotate. Обычно, используется один конфиг-файл, в который включены другие необходимые конфиг-файлы. Для реализации этого см. ниже как использовать директиву include. Если директория задана в командной строке, то каждый файл в это директории расценивается как конфиг-файл. Если аргументов в командной строке не задано, logrotate выдаст информацию о версии и копирайте, а также краткую справку. Если в процессе ротации логов произодут ошибки, logrotate завершится с ненулевым статусом.

ОПЦИИ

-d
Включить режим отладки и предполагает -v. В режиме отладки, не производится никаких изменения с лог-файлами и файлом состояния.
-f, --force
Сообщает logrotate о принудительной ротации , даже если в этом не необходимости. Иногда, этот параметр используется после добавления новых записей в logrotate или если лог-файл был удален в ручную, так как после этого будет создан новый файл, и запись и ратоция логов продолжится корректно.
-m, --mail <command>
Сообщает logrotate какую команду использовать во время отправки логов по почте. command принимает два ргумента: 1) Тема сообщения (письма) и 2) адрес получателя. В этом случае команда должна читать сообщение со стандартного ввода и посылать его получателю. По умолчанию используется значение /bin/mail -s.
-s, --state <statefile>
Сообщает logrotate использовать алтернативный файл состояния. Это используется, если logrotate запущен под другим пользователем для разных настроек лог-файла. По умолчанию используется значение /var/lib/logrotate/status.
--usage
Выдает короткую справку по использованию.

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

logrotate получает информацию обо всех лог-файлах и должно управляться серией конфигурационных файлов определенных в командной строке. Каждый конфигурационный файл может содержать глобальные опции (локальный определения отменяют глобальные, а более поздние опции – более ранние) и устанавливать лог-файл для ротации. Простой пример:

# sample logrotate configuration file

#0
compress
#1
/var/log/messages {
    rotate 5
    weekly
    postrotate
                /sbin/killall -HUP syslogd
    endscript
}
#2
"/var/log/httpd/access httpd.log" /var/log/httpd/error.log {
    rotate 5
    mail www@my.org
    size=100k
    sharedscripts
    postrotate
                              /sbin/killall -HUP httpd
    endscript
}
#3
/var/log/news/* {
    monthly
    rotate 2
    olddir /var/log/news/old
    missingok
    postrotate
                              kill -HUP `cat /var/run/inn.pid`
    endscript
    nocompress
}

В первыйх строках устанавливаются глобальные опции: а данном примере ( compress ) логи архивируются (сжимаются) после ротации. Заметьте, коменратии можно оставлять в любом месте конфига, если строка коментария начинается с #.

В следующей секции конфига определяется, как будет обрабатываться лог-файл /var/log/messages. Лог будет участвовать в ротации еженедельно (weekly) 5 недель подряд(rotate 5), прежде чем будет удален. После ротации, но перед тем как старый лог будет сжат , будет выполнена команда /sbin/killall -HUP syslogd. postrotate /sbin/killall -HUP syslogd endscript.

Во второй секции определяются параметры для двух лог-файлов /var/log/httpd/access.log и /var/log/httpd/error.log. Они будут участвовать в ротации пока их размер не превысит 100Кб (size=100k) и старые лог-файлы буду отправлены по почте (несжатые )на адрес www@my.org ( mail www@my.org) после проходжждения 5 ротаций (rotate 5), и только тогда будут удалены. Опция sharedscripts значит, что postrotate script будет запущен только один раз, а не по одному разу для каждого лога при ротации. Заметьте, что двойные ограничители (") вокруг первого имени файла, позволяют logrotate обрабатывать логи с пробелами в имени файла. Обычно поддерживаются ' , " , и \ знаки ограничители.

В третьей секции определяется параметры для всех лог-файлов в директории /var/log/news. Каждый файл будет участвовать в ротации ежемесячно (monthly) на протяжении 2-х месяцев ( rotate 2). Это считают единственной директивой ротации и если ошибки происходят для более чем одного файла, файлы системного журнала не архивируются.

Пожалуйста используйте групповые символы с аккуратностью. Если Вы определите *, то logrotate будет обрабатывать все файлы, включая предварительно обработанные. Путь обхода этого состоит в том, чтобы использовать olddir директиву или более точный групповой символ (, типа *.log).

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

compress
Архивировать старые версии файлов системного журнала. По умолчанию сжаты gzip. См. также nocompress.
compresscmd
Определяет, какую команду использовать, чтобы архивировать файлы системного журнала . По умолчанию используется gzip. См. также compress.
uncompresscmd
Определяет, какую команду использовать, чтобы разархивировать файлы системного журнала. По умолчанию используется gunzip.
compressext
Определяет, какое расширение использовать для сжатого лог-файла, если архивация включена. По умолчанию используется расширение программы сжатия..
compressoptions
Программе сжатия можно передать опции командной строки. По умолчанию для gzip используется "-9" (максимальное сжатие).
copy
Делает копию лог-файла, но не изменяя оригинал. Эта опция может использоваться, например, чтобы сделать "снимок" текущего лог-файла, или когда другой программе понадобится урезать или очистить файл. Когда эта опция используется, опция create не будет иметь никакого эффекта, и старый лог-файла останется на месте.
copytruncate
 
Сокращает оригинальный файл системного журнала после создания копии, вместо того, чтобы переместить старый файл системного журнала и произвольно создавать новый. Это может использоваться, когда некоторой программе нельзя приказать закрыть ее logfile и таким образом может продолжить дальше писать (добавлять) к предыдущему файлу системного журнала. Отметьте, что есть очень маленький промежуток времени между копированием файла и его сокращением , таким образом некоторые данные могут быть потеряны. Когда эта опция используется, сопция create не будет иметь никакого эффекта, поскольку старый лог-файла останется на месте.
create mode owner group
Немедленно после ротации (прежде, чем скрипт postrotate будет запущен) создается файл системного журнала (с тем же самым названием как и обрабатываемый файл системного журнала). mode определяет способ для бинарных (восьмиричных) файлов системного журнала (так же как и chmod owner определяет имя пользователя, который будет владельцем файл системного журнала, и group определяет группу, которой файл системного журнала будет принадлежать. Любой из атрибутов файла системного журнала может быть опущен, в случае если атрибуты для нового файла будут использоваться те же самые, что и у оригинального файла системного журнала. Эта опция не будет иметь никакого эффекта, если используется опция nocreate.
daily
Подвергать лог-файлы ротации каждый день.
delaycompress
Отложить сжатие предыдущего файла системного журнала к следующему циклу ротации. Это имеет только эффект когда используется в комбинации с compress. Это может использоваться, когда какая-то программа не может закрыть ее logfile и таким образом может продолжать дописывать к предыдущему файлу системного журнала в течение некоторого времени.
extension ext
Финальное расширение ext, которое датся лог-файлу после ротации. Если сжатие используется , то расширение архива (обычно .gz) присоединяется после ext.
ifempty
Обрабатывать лог-файлы, даже если они пустые. Противоположность опции notifempty (ifempty по умолчанию ).
include file_or_directory
Читает файл, заданный как аргумент, как будто он был включен там, где появляется директива include. Если директория задана, большинство файлов в той директории читается в алфавитном порядке перед обработкой файла включения. Единственные файлы, которые игнорируются, - файлы, которые не регулярные файлы ( директории и именованые каналы) и файлов, заканчивающиеся одним из запретных расширений, как определено в соответствии с директивой tabooext . Директива include, не может появляется внутри определении файла системного журнала.
 
mail address
Обработанные лог-файлы можно отправляется по почте на address.Если никакую почта не надо отправлять, можно использовать директиву nomail .
mailfirst
Когда используется команда mail, mail the just-rotated file, instead of the about-to-expire file.
maillast
Когда используется команда mail, mail the about-to-expire file, instead of the just-rotated file (по умолчанию).
missingok
Если лог-файл потерян, продолжи со следующего без сообщения об ошибке. См. также nomissingok.
monthly
Лог-файл обрабатывается logrotate раз в месяц (обычно это первый день месяца ).
nocompress
Старые версии лог-файлов не сжимаются gzip. См. также compress.
nocopy
Не копировать оргинальный лог-файл и оставить его на своем месте. (В противоположность опции copy).
nocopytruncate
Не сокращает оригинальный файл системного журнала после создания копии (В противоположность опции copytruncate).
nocreate
Новый лог-файл не будет создан (В противоположность опции create ).
nodelaycompress
НЕ откладывать сжатие предыдущего файла системного журнала к следующему циклу ротации. (в противоположность опции delaycompress).
nomail
Никуда не отправлсять лог-файлы.
nomissingok
Если лог-файл не существует, сообщить об ошибке (опция по умолчанию) .
noolddir
Складывать обработанные лог-файлы в ту же директорию, где хранятся текущие (в противоположность опции olddir).
nosharedscripts
Запускать скрипты prerotate и postrotate для каждого обрабатываемого скрипта (установлено по умолчанию, в противоположность опции sharedscripts ).
notifempty
Не обрабатывать лог-файлы если они пустые (в противоположность опции ifempty ).
olddir directory
Лог-файлы перемещаются в directory для ротации. directory _ должна быть в том же физическом разделе что и обрабатываемые лог-файлы. Когда эта опция используется , все старые версии лог-файлов помещаются в directory. Эта опция противоположна опции noolddir.
postrotate/endscript
Строки между postrotate и endscript выполненяются после того, как файл системного журнала обрабатывается. Эти директивы могут указываться только в определении файла системного журнала. См. также prerotate .
prerotate/endscript
Строки между prerotate and endscript (both of which
must appear on lines by themselves) выполненяются перед ротацией файлов системного журнала и только еслиони точно будут обрабатываться. Эти директивы могут указываться только в определении файла системного журнала. См. также postrotate.
rotate count
Подвергать лог-файлы ротации указанное count количество раз перед тем как удалить или отправить почтой по адресу, указанному в директиве mail. Если count = 0, старая версия лог-файла заменяется новой во время ротации.
size size
Подвергать ротации лог-файл, когда он достигает размера size bytes. Если за size следует М, тогда опция size указана в Megabytes. Если k - в kilobytes. Так size 100, size 100k, и size 100M приемлемы..
sharedscripts
Обычно скрипт, укзанный между опциями prescript и postscript запускаются для каждого лог-файла , подвергающегося ротации. Это значит, что единственный скрипт может быть запущен несколько раз для каждого лог-файла, который соответствует нескольким файлам (например /var/log/news/* ).Если указана опция sharedscript скрипт запускается только один раз, не зависимо от того, сколько лог-файлов определено групповыми символами. Вобщем, если ни один из лог-файлов в определени не запрашивает ротации, скрипт не будет запущен вообще (в противоположность опции nosharedscripts ).
start count
С этого числа начинается отсчет ротации. Например, если Вы определите 0, то лог-файлы будут созданы с .0 расширениями, поскольку они обрабатываются от оригинальных файлов системного журнала. Если Вы определите 9, то файлы системного журнала будут созданы с .9, пропуская 0-8. Файлы все еще будут обрабатываться количество раз, определенное с директивой count.
tabooext [+] list
The current taboo extension list is changed (see the include directive for information on the taboo extensions). If a + precedes the list of extensions, the current taboo extension list is augmented, otherwise it is replaced. At startup, the taboo extension list contains .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~.
weekly
Лог-файл обрабатывается logrotate раз в неделю (обычно это первый день недели). Log files are rotated if the current weekday is less then the weekday of the last rotation or if more then a week has passed since the last rotation.

FILES

/var/lib/logrotate/status
Default state file.
/etc/logrotate.conf
Configuration options.

SEE ALSO

gzip(1)