man logrotate(8) - ротация, сжатие, и пересылка системных журналов
logrotate [-dv] [-f|--force] [-s|--state statefile] config_file .
logrotate предназначена для легкого администрирования систем, генерирующих большое количество журналов. Она позволяет автоматически ротировать, сжимать, удалять, и пересылать журналы. Каждый файл журнала может обрабатываться ежедневно, еженедельно, ежемесячно или когда он становится слишком большим.
Обычно logrotate запускается ежедневно службой cron. Он будет изменять журнал чаще раза в день, если критерий для этого журнала основывается на размере журнала и logrotate запускается чаще раза в день, или если используется опция -f или --force.
В командной строке может быть указано любое количество файлов конфигурации. Более поздний конфигурационный файл может отменять опции заданные более ранним, так что порядок перечисления конфигурационных файлов logrotate важен. Обычно должен использоваться один конфигурационный файл, который, в свою очередь, подключает другие необходимые конфигурационные файлы. Более подробное описание способа использования директивы подключения описано далее. Если в командной строке указан каталог, каждый файл в этом каталоге используется как конфигурационный файл.
Если в командной строке не указаны аргументы, logrotate напечатает версию, информацию об авторских правах и короткую справку по использованию. Если при ротации логов происходит ошибка, logrotate завершит работу со ненулевым статусом.
Включить отладочный режим, так же это подразумевает опцию -v. В режиме отладки не будут производиться изменения в журналах и файле состояния logrotate.
Сообщает logrotate принудительно выполнить ротацию, даже если он не считает это необходимым. Иногда это полезно после добавления новых записей конфигурационный файл logrotate, или если старые файлы журналов были удалены вручную, так что будут созданы новые файлы и журналирование продолжится корректно.
Сообщает logrotate какую команду использовать для отправки журналов. Эта команда должна принимать два аргумента: 1) тема сообщения, и 2) получатель. Затем команда должна прочитать сообщение со стандартного ввода и отправить его получателю. По умолчанию в качестве команды отправки используется /usr/bin/mail -s.
-s, --state <файл_состояния>
Сообщает logrotate использовать другой файл состояния. Это полезно если logrotate запускается разными пользователями для разных наборов журнальных файлов. По умолчанию файлом состояния является /var/lib/logrotate/status.
Вывести короткую справку по использованию.
Выводить сообщения во время ротации.
logrotate читает всё о файлах журналов, которые он должен обрабатывать из серии конфигурационных файлов, указанных в командной строке. Каждый конфигурационный файл может устанавливать глобальные опции (местные определения переопределяют глобальные, а более поздние определения переопределят предыдущие) и указывает несколько файлов журналов для ротации. Простой конфигурационный файл выглядит как этот:
#простой конфигурационный файл
/usr/bin/killall -HUP syslogd
/usr/bin/killall -HUP httpd
kill -HUP `cat /var/run/inn.pid`
Первые несколько строк устанавливают глобальные опции; в примере журналы после ротации будут сжаты. Учтите, что комментарии, начинающиеся cо знака # и заканчивающиеся концом строки, могут появляться в любом месте конфигурационного файла.
Следующий раздел конфигурационного файла определяет как обрабатывать файл журнала /var/log/messages. Журнал будет проходить через пять еженедельных ротации, прежде чем будет удален. После ротации файла журнала (но перед тем как старая версия журнала будет сжата), будет выполнена команда /sbin/killall -HUP syslogd.
Следующий раздел определяет параметры для файлов /var/log/httpd/access.log и /var/log/httpd/error.log. Каждый из них подвергается ротации, когда их размер достигает 100k, а старые файлы журналов после прохождения 5 ротаций пересылаются (несжатыми) на адрес [email protected], прежде чем они будут удалены. sharedscripts означает что сценарий postrotate будет запущен один раз (после сжатия старых файлов журналов), но не по одному разу для каждого ротируемого журнала. Отметим, что имена файлов журналов быть заключены в кавычки (и кавычки обязательны, если имя содержит пробелы). Применимы обычные правила оболочки для заключения в кавычки, поддерживаются символы ', ", и \.
Последний раздел определяет параметры для всех файлов в /var/log/news. Каждый файл подвергается ежемесячной ротации. Это задаётся единственной директивой ротации, а если происходит ошибка более чем в одном файле, файлы журналов не сжимаются.
Будьте осторожны при использовании шаблонов. Если вы укажете *, logrotate произведет ротацию всех файлов, включая уже обработанные. Чтобы избежать этого, воспользуйтесь директивой olddir или более точным шаблоном (например *.log).
Если каталог /var/log/news не существует, то logrotate сообщит об ошибке. Такое сообщение не может быть отключено с помощью директивы missingok.
Далее следует более подробная информация о директивах, которые могут быть включены в конфигурационный файл logrotate:
Сжать старые файлы журналов с помощью gzip(1) (по умолчанию). Смотри также nocompress.
Указывает команду, с помощью которой происходит сжатие файлов журналов. По умолчанию это gzip(1). Смотри так же compress.
Указывает команду, с помощью которой производится разжатие файлов журналов. По умолчанию gunzip(1).
Указывает расширение, которое используется для сжатых файлов журналов, если сжатие включено. Умолчание зависит от того, какая команда сжатия используется по умолчанию (.gz).
Опции командной строки, которые будут переданы программе сжатия, если она используется. По умолчанию для gzip это "-9" (максимальное сжатие).
Сделать копию файла журнала, но не изменять исходный. Эта опция может использоваться, например, для создания мгновенного снимка текущего файла журнала, или когда другой утилите необходимо обрезать или уменьшить файл. При использовании этой опции, опция create не действует, так как старый файл журнала остается на месте.
После создания копии обрезать исходный файл журнала на месте до нулевого размера, вместо перемещения старого файла журнала и возможного создания нового файла. Это может использоваться когда некой программе нельзя приказать закрыть свой журнал и, следовательно, она может бесконечно продолжать добавлять записи к старому файлу журнала. Отметим, что есть очень маленький временной промежуток между копированием файла и его обрезанием, так что часть журнальных данных может быть потеряна. При использовании этой опции, опция create не действует, так как старый файл журнала остается на месте.
create режим владелец группа
Сразу после ротации (до запуска сценария postrotate) создать файл журнала (с таким же именем, как у только что ротированного файл журнала). Поле "режим" определяет режим для файла журнала в восьмеричном представлении (как в chmod(2)), поле "владелец" определяет имя пользователя который является владельцем этого файла журнала, и поле "группа" определяет группу, которой принадлежит файл журнала. Любой из этих атрибутов может быть пропущен, в таком случае для пропущенных атрибутов будут использоваться атрибуты исходного файла журнала. Эта опция может быть отключена с помощью опции nocreate.
Ежедневная ротация файлов журналов.
К архиву старых версий файлов журналов ежедневно добавляется расширение подобное ГГГГММДД вместо простого добавления номера.
Отсрочка сжатия предыдущего файла журнала на следующий цикл ротации. Эта опция действует только совместно с опцией compress. Она может использоваться когда некой программе нельзя указать закрыть ее файл журнала и таким образом она может продолжать писать в старый журнал на протяжении некоторого времени.
Имена файлов журналов дополняются расширением "расширение" после ротации. Если используется сжатие, расширение архиватора (обычно .gz) добавляется после него.
Ротация файла лога, даже если он пустой, отменяет опцию notifempty (ifempty используется по умолчанию)
Читать файл переданный как аргумент, как если бы он был в том месте, где встретилась директива include. Если задан каталог, большинство файлов в этом каталоге будут прочитаны в алфавитном порядке, перед тем как возобновится обработка включающего файла. Игнорируются только те файлы, которые не являются обычными файлами (например, каталоги и именованные каналы) и файлы, имена которых содержат запретные расширения, указанные директивой tabooext. Директива include не может появляться внутри определения файла журнала.
Если файл прошёл полный цикл ротации, то перед уничтожением он будет отправлен на указанный адрес. Если определённый журнал не должен отправляться по почте, можно воспользоваться директивой nomail.
При использовании команды mail, отправлять только что обработанный файл, вместо готовящегося устареть.
При использовании команды mail, отправлять файл готовящийся устареть, вместо только что обработанного (по умолчанию).
Удалять ротированные файлы журналов, которые старше указанного количества дней. Возраст проверяется только если файл журнала будет ротирован. Файлы отправляются по указанному адресу, если maillast и mail были настроены.
Если файл журнала отсутствует, перейти к следующему без создания сообщения об ошибке. Смотри также nomissingok.
Файлы журналов ротируются при первом запуске logrotate в новом месяце (обычно это первый день месяца).
Старые версии файлов журналов не сжимаются. Смотри также compress.
Не копировать исходный файл журнала и оставить его на месте (это перекрывает опцию copy).
Не обрезать исходный файл журнала на месте после создания копии (это перекрывает опцию copytruncate).
Новые файлы журнала не создаются (это перекрывает опцию create).
Не выполнять отложенное сжатие предыдущих файлов журналов в следующем цикле ротации (это перекрывает опцию delaycompress).
Не отправляться старые файлы журналов на какой-либо адрес.
Если файл журнала не существует, вызывает ошибку. Это опция используется по умолчанию.
Журналы ротируются в каталоге, в котором они обычно находятся (это перекрывает опцию olddir).
Запустить сценарии prerotate и postrotate для каждого ротируемого журнала (это поведение по умолчанию, и оно перекрывает опцию sharedscripts).
Не ротировать журнал если он пуст (это перекрывает опцию ifempty).
Журналы перемещаются в каталог для ротации. Каталог должен быть на том же физическом устройстве, где находятся ротируемые журналы и если не указано абсолютное путевое имя, то подразумевается путь относительно каталога, содержащего файл журнала. При использовании этой опция, все старые версии журнала остаются в каталоге. Эта опция может быть перекрыта опцией noolddir.
Строки между postrotate и endscript (каждая из которых должна быть в отдельной строке) выполняются после ротации файла журнала. Эти директивы могут встретиться только внутри определения файла журнала. Смотри также prerotate.
Строки между prerotate и endscript (каждая из которых должна быть в одной строке) выполнятся перед ротацией файла журнала и только если журнал будет действительно ротирован. Эти директивы могут встречаться только внутри определения файла журнала. Смотри также postrotate.
Строки между firstaction и endscript (каждая из которых должна быть в одной строке) выполняются однажды перед ротацией всех файлов журналов, совпадающих с шаблоном, перед запуском сценария prerotate и только если по меньшей мере один журнал действительно будет ротирован. Эти директивы могут встречаться только внутри определения файла журнала. Смотри также lastaction.
Строки между lastaction и endscript (каждая из которых должна быть в одной строке) выполняются однажды после того, как все файлы журналов, совпадающие с шаблоном, были ротированы, после запуска сценария postrotate и только если хотя бы один журнал был ротирован. Эти директивы могут встречаться только внутри определения файла журнала. Смотри также firstaction.
Файлы журнала ротируются указанное количество раз перед тем, как будут удалены или отправлены на адрес, указанный в директиве mail. Если счётчик равен нулю, прежние версии удаляются, а не ротируются.
Обычно сценарии prerotate и postrotate выполняются для каждого ротируемого журнала, подразумевая что один сценарий может быть запущен несколько раз для тех файлов журналов, которые совпали с шаблоном (например /var/log/news/*). Если указана sharedscripts, сценарии запускаются только один раз, вне зависимости от того, как много журналов совпало с шаблоном. Однако, если ни один из журналов в шаблоне не требует ротации, сценарий всё же не будет запущен. Эта опция перекрывает опцию nosharedscripts и подразумевает опцию create.
Файлы журналов будут ротированы, если они выросли больше указанного размера в байтах. Если размер указан с буквой M, подразумевается размер в мегабайтах. Если используется буква G, то размер указан в гигабайтах. Если использована буква k, то размер указан в килобайтах. Правильными будут директивы size 100, size 100k, size 200M и size 1G.
Это число, используемое как основа ротации. Например, если вы укажете 0, журналы, полученные при ротации из исходных файлов журналов, будут создаваться начиная с расширения .0. Если вы укажете 9, файлы журналов будут создаваться начиная с расширения .9, пропуская 0-8. Файлы по-прежнему будут подвергаться ротации столько раз, сколько указано в директиве rotate.
Изменить текущий список запрещённых расширений (обратитесь к директиве include за информацией по запрещённым расширениям). Если список предваряет +, текущий список запрещённых расширений дополняется указанным списком, иначе - замещается. При начальной загрузке список запрещённых расширений содержит .rpmorig, .rpmsave, .dpkg-dist, .dpkg-old, .dpkg-new, .disabled, ,v, .swp, .rpmnew, и
. Члены списка разделяются пробелами - не запятыми.
Файлы журналов подвергаются ротации, если текущий день недели меньше дня недели последней ротации или если со времени последней ротации прошло больше недели. Обычно ротация происходит также в первый день недели, но если logrotate не запускается каждую ночь, ротация журналов произойдёт при первой возможности.