LOGROTATE(8)

НАЗВАНИЕ
logrotate - ротация, сжатие, и пересылка системных журналов

ОБЗОР
logrotate [-dv] [-f|--force] [-s|--state файл_состояния] файл_конфигурации ..

ОПИСАНИЕ
logrotate предназначена для лёгкого администрирования систем, генерирующих большое количество журналов. Она позволяет автоматически ротировать, сжимать, удалять, и пересылать журналы. Каждый файл журнала может обрабатываться ежедневно, еженедельно, ежемесячно или когда он становится слишком большим.

Обычно logrotate запускается ежедневно службой cron. Он будет изменять журнал чаще раза в день, если условия ротации журнала используют размер журнала, а logrotate будет запускаться чаще раза в день или если используется опция -f или --force.

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

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

ОПЦИИ

-?, --help
    Вывести справку по использованию.

-d, --debug
    Включить отладочный режим, так же это подразумевает опцию -v. В режиме отладки не будут производиться изменения в журналах и файле состояния logrotate.

-f, --force
    Сообщает logrotate принудительно выполнить ротацию, даже если он не считает это необходимым. Иногда это полезно после добавления новых записей конфигурационный файл logrotate, или если старые файлы журналов были удалены вручную, так что будут созданы новые файлы и журналирование продолжится корректно.

-m, --mail <команда>
    Сообщает logrotate какую команду использовать для отправки журналов. Эта команда должна принимать два аргумента: 1) тема сообщения, и 2) получатель. Затем команда должна прочитать сообщение со стандартного ввода и отправить его получателю. По умолчанию в качестве команды отправки используется /usr/bin/mail -s.

-s, --state <файл_состояния>
    Сообщает logrotate использовать другой файл состояния. Это полезно если logrotate запускается разными пользователями для разных наборов журнальных файлов. По умолчанию файлом состояния является /var/lib/logrotate/status.

--usage
    Вывести короткую справку по использованию.

-v, --verbose
    Выводить сообщения во время ротации.

КОНФИГУРАЦИОННЫЙ ФАЙЛ
logrotate читает информацию о файлах журналов, которые он должен обрабатывать из последовательности конфигурационных файлов, указанных в командной строке. Каждый конфигурационный файл может устанавливать глобальные опции (локальные определения переопределяют глобальные, а более поздние определения переопределят предыдущие) и указывает несколько файлов журналов для ротации. Простой конфигурационный файл примерно так:
#простой конфигурационный файл
compress
/var/log/messages {
    rotate 5
    weekly
    postrotate
        /usr/bin/killall -HUP syslogd
    endscript
}
"/var/log/httpd/access.log" /var/log/httpd/error.log {
    rotate 5
    mail www@my.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}
/var/log/news/* {
    monthly
    rotate 2
    olddir /var/log/news/old
    missingok
    postrotate
        kill -HUP `cat /var/run/inn.pid`
    endscript
    nocompress
}

Первые несколько строк устанавливают глобальные опции; в примере журналы после ротации будут сжаты. Учтите, что комментарии, начинающиеся cо знака # и заканчивающиеся концом строки, могут появляться в любом месте конфигурационного файла. Следующий раздел конфигурационного файла определяет как обрабатывать файл журнала /var/log/messages. Журнал будет проходить через пять еженедельных ротации, прежде чем будет удалён. После ротации файла журнала (но перед тем как старая версия журнала будет сжата), будет выполнена команда /sbin/killall -HUP syslogd. Следующий раздел определяет параметры для файлов /var/log/httpd/access.log и /var/log/httpd/error.log. Каждый из них подвергается ротации, когда их размер достигает 100k, а старые файлы журналов после прохождения 5 ротаций пересылаются (несжатыми) на адрес www@my.org, прежде чем они будут удалены. sharedscripts означает что сценарий postrotate будет запущен один раз (после сжатия старых файлов журналов), но не по одному разу для каждого ротируемого журнала. Отметим, что имена файлов журналов можно заключать в кавычки (но кавычки обязательны, если имя содержит пробелы). Применимы обычные правила оболочки для заключения в кавычки, поддерживаются символы ', ", и \. Последний раздел определяет параметры для всех файлов в /var/log/news. Каждый файл подвергается ежемесячной ротации. Это задаётся единственной директивой ротации, а если происходит ошибка более чем в одном файле, файлы журналов не сжимаются. Будьте осторожны при использовании шаблонов. Если вы укажете *, logrotate произведет ротацию всех файлов, включая уже обработанные. Чтобы избежать этого, воспользуйтесь директивой olddir или более точным шаблоном (например *.log). Если каталог /var/log/news не существует, то logrotate сообщит об ошибке. Такое сообщение не может быть отключено с помощью директивы missingok. Далее следует более подробная информация о директивах, которые могут быть включены в конфигурационный файл logrotate:

compress
    Сжать старые файлы журналов. По умолчанию - с помощью gzip(1). Смотрите также описание опции nocompress.

compresscmd
    Указывает команду, с помощью которой происходит сжатие файлов журналов. По умолчанию это gzip(1). Смотри так же compress.

uncompresscmd
    Указывает команду, с помощью которой производится разжатие файлов журналов. По умолчанию gunzip(1).

compressext
    Указывает расширение, которое используется для сжатых файлов журналов, если сжатие включено. По умолчанию - это ".gz". Если используется другая команда сжатия, нужно соответствующим образом поменять значение опции compressext.

compressoptions
    Опции командной строки, которые будут переданы программе сжатия, если она используется. По умолчанию для gzip это "-9" (максимальное сжатие). Если используется другая команда сжатимя, можно соответствующим образом поменять значение опции compressoptions.

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

copytruncate
    После создания копии обрезать исходный файл журнала на месте до нулевого размера, вместо перемещения старого файла журнала и возможного создания нового файла. Это может использоваться когда некой программе нельзя приказать закрыть свой журнал и, следовательно, она может бесконечно продолжать добавлять записи к старому файлу журнала. Отметим, что есть очень маленький временной промежуток между копированием файла и его обрезанием, так что часть журнальных данных может быть потеряна. При использовании этой опции, опция create не действует, так как старый файл журнала остается на месте.

create режим владелец группа
    Сразу после ротации (до запуска сценария postrotate) создать файл журнала (с таким же именем, как у только что ротированного файл журнала). Поле режим определяет режим для файла журнала в восьмеричном представлении (как в chmod(2)), поле владелец определяет имя пользователя который является владельцем этого файла журнала, и поле группа определяет группу, которой принадлежит файл журнала. Любой из этих атрибутов может быть пропущен, в таком случае для пропущенных атрибутов будут использоваться атрибуты исходного файла журнала. Эта опция может быть отключена с помощью опции nocreate.

daily
    Ежедневная ротация файлов журналов.

dateext
    К архиву старых версий файлов журналов ежедневно добавляется расширение подобное ГГГГММДД вместо простого добавления номера. Расшиерние можно настроить при помощи опций dateformat и dateyesterday.

dateformat строка_формата
    Указать расширение для dateext с использованием строки формата, похожей на ту, которая используется в функции strftime(3). Допускаются только символы подстановки %Y %m %d и %s. По умолчанию используется расширение по формату -%Y%m%d. Отметим также, что символ, отделяющий имя журнала от расширения, является частью строки формата даты. Для того, чтобы символ подстановки %s работал правильно, системыне часы должны быть установлены на дату после 9 сентября 2001 года. Отметим, что отметки даты, генерируемые при помощи этой строки формата, должны поддаваться алфавитной сортировке. То есть, сначала должен идти год, затем месяц и потом день. Например, 2001/12/01 - это правильный формат, но 01/12/2001 уже не подходит, потому что 01/11/2002 в результате сортировки встретится раньше, хотя дата более поздняя. Это необходимо, потому что опция rotate сортирует все имена файлов для ротации, чтобы найти наиболее старые файлы, которые требуется удалить.

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

delaycompress
    Отсрочка сжатия предыдущего файла журнала на следующий цикл ротации. Эта опция действует только совместно с опцией compress. Она может использоваться когда некой программе нельзя указать закрыть её файл журнала и таким образом она может продолжать писать в старый журнал на протяжении некоторого времени.

extension расширение
    После ротации имена файлов журналов дополняются расширением расширение. Если используется сжатие, расширение архиватора (обычно .gz) добавляется после него. Например, имеется файл журнала с именем mylog.foo, а вы хотите, чтобы при ротации его именя изменилось на mylog.1.foo.gz, а не на mylog.foo.1.gz.

ifempty
    Ротация файла лога, даже если он пустой, отменяет опцию notifempty (ifempty используется по умолчанию).

include файл_или_каталог
    Читать указанный в аргументе файл, как если бы он был в том месте, где встретилась директива include. Если указан каталог, файлы из этого каталога будут прочитаны в алфавитном порядке, перед тем как возобновится обработка включающего файла. Игнорируются только те файлы, которые не являются обычными файлами (например, каталоги и именованные каналы) и файлы, имена которых содержат запрещённые расширения, указанные директивой tabooext.

mail адрес
    Если файл прошёл полный цикл ротации, то перед уничтожением он будет отправлен на указанный адрес. Если определённый журнал не должен отправляться по почте, можно воспользоваться директивой nomail.

mailfirst
    При использовании команды mail, отправлять только что обработанный файл, вместо готовящегося устареть.

maillast
    При использовании команды mail, отправлять файл готовящийся устареть, вместо только что обработанного (по умолчанию).

maxage количество
    Удалять ротированные файлы журналов, которые старше указанного <количества> дней. Возраст проверяется только если файл журнала будет ротирован. Файлы отправляются по указанному адресу, если maillast и mail были настроены.

maxsize размер
    Файлы журнала подвергаются ротации, когда вырастают до размера больше, чем указанный размер в байтах, до указанного временного интервала (daily - ежедневно, weekly - еженедельно, monthly - ежемесячно или yearly - ежегодно). Похожая опция size действует сходным образом, за исключением того, что она не может использоваться совместно с опциями интервалов времени и вызывает ротацию файлов журналов не учитывая время последней ротации. Если указана опция maxsize, будут учитываться и настройки размера и настройки отметки времени.

minsize размер
    Файлы журналов подвергаются ротации, когда вырастают до размера больше, чем указанный размер в байтах, но не перед указанным интервалом времени (daily - ежедневно, weekly - еженедельно, monthly - ежемесячно или yearly - ежегодно). Похожая опция size действует сходным образом, за исключением того, что она не может использоваться совместно с опциями интервалов времени и вызывает ротацию файлов журналов не учитывая время последней ротации. Если указана опция minsize, будут учитываться и настройки размера и настройки отметки времени.

missingok
    Если файл журнала отсутствует, перейти к следующему без создания сообщения об ошибке. Смотри также nomissingok.

monthly
    Файлы журналов ротируются при первом запуске logrotate в новом месяце (обычно это первый день месяца).

nocompress
    Старые версии файлов журналов не сжимаются. Смотри также compress.

nocopy
    Не копировать исходный файл журнала и оставить его на месте (это перекрывает опцию copy).

nocopytruncate
    Не обрезать исходный файл журнала на месте после создания копии (это перекрывает опцию copytruncate).

nocreate
    Новые файлы журнала не создаются (это перекрывает опцию create).

nodelaycompress
    Не выполнять отложенное сжатие предыдущих файлов журналов в следующем цикле ротации (это перекрывает опцию delaycompress).

nodateext
    Не архивировать старые версии файлов журналов с расширением-датой (перекрывает действие опции dateext).

nomail
    Не отправляться старые файлы журналов на какой-либо адрес.

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

noolddir
    Журналы ротируются в каталоге, в котором они обычно находятся (это перекрывает опцию olddir).

nosharedscripts
    Запустить сценарии prerotate и postrotate для каждого файла журнала, подвергнутому ротации (это поведение используется по умолчанию и оно перекрывает опцию sharedscripts). Абсолютный путь к файлу журнала передаётся сценарию в качестве первого аргумента. Если сценайрий завершился с ошибкой, оставшиеся действия не быдут выполнены только для того файла журнала, обработка которого завершилась ошибкой.

noshred
    Не использовать программу shred при удалении старых файлов журналов. Смотрите также описание опции shred.

notifempty
    Не ротировать журнал если он пуст (это перекрывает опцию ifempty).

olddir каталог
    Журналы перемещаются в каталог для ротации. Каталог должен находиться на том же физическом устройстве, где находятся ротируемые журналы и если не указано абсолютное путевое имя, то подразумевается путь относительно каталога, содержащего файл журнала. При использовании этой опции, все старые версии журнала остаются в каталоге. Эта опция может быть перекрыта опцией noolddir.

postrotate/endscript
    Строки между postrotate и endscript (каждая из которых должна располагаться в отдельной строке) выполняются после ротации файла журнала при помощи /bin/sh. Эти директивы могут встретиться только внутри определения файла журнала. Обычно абсолютный путь к файлу журнала передаётся сценарию в качестве первого аргумента. Если указана опция sharedscripts, в сценарий передаётся весь шаблон. Смотрите также описание опции prerotate. Обратитсеь к описанию опций sharedscripts и nosharedscripts за подробностями об обработке ошибок.

prerotate/endscript
    Строки между prerotate и endscript (каждая из которых должна находиться в одной строке) выполнятся при помощи /bin/sh перед ротацией файла журнала и только если журнал будет действительно ротирован. Эти директивы могут встречаться только внутри определения файла журнала. Обычно абсолютный путь к файлу журнала передаётся в сценарий в качестве его первого аргумента. Если указана опция sharedscripts, весь шаблон будет передан в сценарий. Смотрите также описание опции postrotate. Обратитесь к описанию опций sharedscripts и nosharedscripts за подробностями об обработке ошибок.

firstaction/endscript
    Строки между firstaction и endscript (каждая из которых должна находиться в одной строке) выполняются единожды при помощи /bin/sh перед ротацией всех файлов журналов, совпадающих с шаблоном, перед запуском сценария prerotate и только если хотя бы один журнал действительно будет ротирован. Эти директивы могут встречаться только внутри определения файла журнала. Смотри также lastaction. Весь шаблон передаётся сценарию в качестве первого аргумента. Если сценарий завершился с ошибкой, дальнейшая обработка не выполняется. Смотрите также описание опции lastaction.

lastaction/endscript
    Строки между lastaction и endscript (каждая из которых должна находиться в одной строке) выполняются единожды при помощи /bin/sh после того, как все файлы журналов, совпадающие с шаблоном, были ротированы, после запуска сценария postrotate и только если хотя бы один журнал был ротирован. Эти директивы могут встречаться только внутри определения файла журнала. Весь шаблон передаётся сценарию в качестве первого аргумента. Если сценарий завершился с ошибкой, дальнейшая обработка не выполняется. Смотри также firstaction.

rotate количество
    Файлы журнала ротируются указанное количество раз перед тем, как будут удалены или отправлены на адрес, указанный в директиве mail. Если количество равно нулю, прежние версии удаляются, а не ротируются.

size размер
    Файлы журналов будут ротированы только если они выросли больше указанного размера в байтах. Если использована буква k, то размер указан в килобайтах. Если размер указан с буквой M, подразумевается размер в мегабайтах. Если используется буква G, то размер указан в гигабайтах. Директивы size 100, size 100k, size 200M и size 1G будут считаться правильными.

sharedscripts
    Обычно сценарии prerotate и postrotate выполняются для каждого ротируемого файла журнала, а абсолютный путь к файлу журнала передаётся в качестве первого аргумента сценария. Это означает, что один сценарий может быть запущен несколько раз для тех файлов журналов, которые совпали с шаблоном (например /var/log/news/*). Если указана опция sharedscripts, сценарии запускаются только один раз, вне зависимости от того, как много журналов совпало с шаблоном, а сценарию передаётся весь шаблон. Однако, если ни один из журналов по шаблону не требует ротации, сценарий всё же не будет запущен. Если сценарий завершится с ошибкой, оставшиеся действия не будут выполнены ни для одного файла журнала. Эта опция перекрывает действие опции nosharedscripts и подразумевает опцию create.

shred
    Удалять файлы журналов при помощи программы shred -u, а не при помощи системного вызова unlink(). Эта опция позволяет быть уверенным в том, что после запланированного удаления файлы больше нельзя будет прочитать. По умолчанию эта опция не используется. Смотрите также описание опции noshred.

shredcycles количество
    Перед удалением вызвать программу GNU shred(1) для перезаписи содержимого файлов журналов указанное в опции count количество раз. Если эта опция не указана, то по умолчанию shred не используется.

start начало
    Начало - это число, используемое как основа ротации. Например, если вы укажете 0, журналы, полученные при ротации из исходных файлов журналов, будут создаваться начиная с расширения .0. Если вы укажете 9, файлы журналов будут создаваться начиная с расширения .9, пропуская 0-8. Файлы по-прежнему будут подвергаться ротации столько раз, сколько указано в директиве rotate.

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

tabooext [+] список
    Изменить текущий список запрещённых расширений (обратитесь к директиве include за информацией по запрещённым расширениям). Если список предваряет +, текущий список запрещённых расширений дополняется указанным списком, иначе - замещается. При начальной загрузке список запрещённых расширений содержит rpmsave, .rpmorig, ~, .disabled, .dpkg-old, .dpkg-dist, .dpkg-new, .cfsaved, .ucf-old, .ucf-dist, .ucf-new, .rpmnew, .swp, .cfsaved, .rhn-cfg-tmp-*

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

yearly
    Файлы журналов подвергаются ротации, если нынешний год не совпадает с годом прошлой ротации.

ФАЙЛЫ
/var/lib/logrotate.status
    Файл состояния по умолчанию.
/etc/logrotate.conf
    Настроечные опции.

СМОТРИ ТАКЖЕ
gzip(1)

ЗАМЕЧАНИЯ
Программа killall(1) в Debian находится в пакете psmisc.

АВТОРЫ
Эрик Троан (Erik Troan), Престон Браун (Preston Brown), Ян Калужа (Jan Kaluza).
<logrotate-owner@fedoraproject.org>
<http://fedorahosted.org/logrotate/>
Исправления и изменения для Debian внёс Пол Мартин (Paul Martin) <pm@debian.org>

АВТОРЫ ПЕРЕВОДА
Перевод выполнен на сайте коллективных переводов http://translated.by. Авторы перевода Владимир Ступин <wheel69@yandex.ru>, Олег Безначев aka saturn721.