Оборот журналів logrotate

Матеріал з Wiki TNEU
Перейти до: навігація, пошук

LOGROTATE(8) Ротація журналів LOGROTATE(8)

НАЗВА

      logrotate  -  циклічно переміщує, архівує та посилає електронною почтою
      системні журнали

ЗВЕДЕННЯ

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

ОПИС

      logrotate розроблений для полегшення адміністрування систем, що  ведуть
      велику  кількість  журналів.  Він  також забезпечує ротацію, архівацію,
      видалення та відправку журналів електронною почтою. Кожний журнал  може
      переміщатись  щоденно,  потижнево  чи щомісячно, або при досягненні ним
      певного розміру.
      Звично logrotate запускають щоденно за допомогою cron. Це не значить що
      він  буде  модифікувати  журнали  кілька  раз  в день хіба, що критерій
      розміру журналу на якому засновується  циклічна  заміна  журналів  буде
      виконуватись  і  logrotate  запускатиметься кілька разів на день, або з
      опцією -f, або -force для примусової циклічної заміни журналів.
      Будь-яке число  файлів  з  налаштуваннями  можна  вказати  в  командній
      стрічці.   Файли  вказані  пізніше  змінюють опції вказані у попередніх
      файлах, так, що порядок конфігураційних файлів у logrotate є  важливий.
      Зазвичай  використовується  єдиний файл конфігурації, який включає інші
      потрібні файли налаштувань. Нижче описано, як це робиться за  допомогою
      директиви  include.  Якщо  командному  рядку вказано каталог, то кожний
      файл з цього каталогу використовується як файл налаштувань.
      Якщо не  вказано  ніяких  параметрів  на  командному  рядку,  logrotate
      видасть   версію,   авторські   права   та   коротеньку  інформацію  по
      використанню і закінчить роботу. При появі будь-яких  помилок  під  час
      виконання logrotate припинить роботу з не нульовим статусом.

ОПЦІЇ

      -d     Вмикає  режим  відлагодження  і додає -v. У режимі відлагодження
             ніяких змін з файлами журналів чи файла стану logrotate.
      -f, --force
             Вказує logrotate проводити примусову циклічну  заміну  журналів,
             навіть,  коли  потреби  в  цьому немє. Подеколи це корисно після
             додання нового пункту в logrotate, чи для створення нових файлів
             журналів,  коли  старі  файли  журналів  переміщено  вручну, щоб
             ведення протоколу могло продовжуватись далі правильно.
      -m, --mail <command>
             Вказує logrotate,  яку  команду  використовувати  для  пересилки
             журналів  електронною  почтою.  Ця  команда повинна приймати два
             параметри 1) тему повідомлення,  і  2)  адрес  отримувача.  Далі
             команда  повинна  зчитати  повідомлення  з  стандартного вводу і
             відіслати адресату. По замовленню використовується /bin/mail -s.
      -s, --state <statefile>
             Вказує logrotate використовувати альтернативний файл статусу. Це
             корисно  коли  ротація  стартує  під  різними  користувачами для
             різних    файлів    стану.    Без    задання    використовується
             /var/lib/logrotate.status.
      --usage
             Виводить коротке повідомлення що до використання.

ФАЙЛ НАЛАШТУВАНЬ

      logrotate  зчитує  всі  вказівки  що  до дій з журналами з серії файлів
      налаштування вказаних в командній стрічці. Кожний файл  може  визначати
      глобальні  опції  (  місцеві визначення змінюють глобальні і визначення
      вказані пізніше змінюють ті що були перед ними) і  файли  журналів  для
      циклічного переміщення. Простий файл з налаштуваннями виглядає так:
      $ cat /etc/logrotate.conf
      # sample logrotate configuration file
      compress
      /var/log/messages {
      rotate 5
      weekly
      postrotate
          /etc/init.d/syslog-ng reload
      endscript
      }
      "/var/log/httpd/access.log" /var/log/httpd/error.log {
      rotate 5
      mail www@my.org
      size=100k
      sharedscripts
      postrotate
           /sbin/killall -HUP httpd
      endscript
      }
      # packages can drop log rotation information into this directory
      include /etc/logrotate.d
      $ cat /etc/logrotate.d/news
      /var/log/news/* {
      monthly
      rotate 2
      olddir /var/log/news/old
      missingok
      postrotate
            kill -HUP `cat /var/run/inn.pid`
      endscript
      nocompress
      }
      Перші  декілька стрічок визначають глобальні опції, наприклад архівацію
      журналів після їх циклічної  перестановки.  Коментарі  можна  вставляти
      будь-де  у  файлі  налаштувань,  але  перша  стрічка  коментаря повинна
      починатись з символу #.
      Наступна  секція  конфігураційного  файла  визначає  які  дії  потрібно
      зробити   з   журналом   /var/log/messages.   Журнали  будуть  циклічно
      переміщуватись п'ять тижнів перед тим як  витруться.  Після  циклічного
      переміщення (але перед тим як стара версія журналу почне архівуватися),
      виконається команда /etc/init.d/syslog-ng  reload  (/sbin/killall  -HUP
      syslogd).
      Слідуюча     секція    визначає    параметри    для    двох    журналів
      /var/log/httpd/access.log та /var/log/httpd/error.log.   Вони  циклічно
      переміщуються  як  тільки  розмір  журналу  стає  більшим 100k і старий
      журнал,  після  5  циклічних  зсувів,  не  архівований,   перед   своїм
      видаленням,  пересилається  на адресу www@my.org. sharedscripts означає
      що сценарій після зсуву postrotate буде запущений тільки один раз, а не
      по  разу для кожного журналу що проходить ротацію. Увага, лапки навколо
      першого імені файла дозволяють logrotate  працювати  з  іменами  файлів
      журналів,  що  містять  пробіли.  Звично командна оболонка використовує
      лапки ', ", і символ \.
      Директива  include  /etc/logrotate.d  призводить  до  зчитування   всіх
      файлів, як конфігураційних, з каталогу /etc/logrotate.d
      Файл   /etc/logrotate.d/news  визначає  параметри  для  всіх  файлів  в
      /var/log/news. Кожний файл циклічно зсувається з місячним періодом.  Це
      вважається  як  єдина директива для ротації і якщо помилки будуть більш
      ніж для одного файла, то журнали не архівуватимуться.
      Будь-ласка використовуйте * з обережністю.  якщо  вкажете  *  logrotate
      буде  циклічно  зсувати кожний файл включаючи попередньо вже зсунуті та
      заархівовані. Шлях обійти це полягає у використанні директиви olddir чи
      більш точною вказівкою *.log
      Далі    наведемо    більше   інформації   про   директиви   що   можуть
      використовуватись в файлах налаштувань logrotate:
      compress
             Стара версія журналу архівується  без  задання  програмою  gzip.
             Також дивіться nocompress.
      compresscmd
             Вказує котру команду використовувати для архівації журналів. Без
             задання gzip. Також дивіться директиву compress.
      uncompresscmd
             Вказує яку команду використовувати для  роз-архівації  журналів.
             Без задання gunzip.
      compressext
             Вказує  закінчення  яке  додається до архівованого журналу, якщо
             архівація  включена.  Без  задання  використовується  закінчення
             (розширення) архіватора.
      compressoptions
             Командна   стрічка   що   передається   архіватору,   якщо   він
             використовується.  Поз вибором для  gzip,  є  "-9"  (максимальне
             стискання).
      copy   Робить  копію  журналу,  але  не змінює зовсім вхідний. Цю опцію
             використовують наприклад для отримання копії поточних  журналів,
             чи  коли  якась  стороння утиліта потребує урізати чи обрізувати
             журнал. Коли  використовується  copy  то  опція  create  не  дає
             ніякого ефекту, так, як старий файл залишається на місці.
      copytruncate
             Врізає оригінальний файл журналу на місці після створення копії,
             замість переміщення старого файла журналу і можливого  створення
             нового. Її використовують коли деякій програмі неможливо сказати
             закрити попередній журнал і отже вона мусить продовжувати писати
             (додавати)  до попереднього журналу. Увага між копіюванням файла
             журналу та урізанням його існує маленький проміжок часу, так  що
             деякі  дані  можуть  пропасти. Коли використовується ця опція то
             create не дає ніякого ефекту, так, як старий файл залишається на
             місці.
      create mode owner group
             Негайно  після ротації (перед запуском післяротаційного сценарію
             postrotate) створюється новий журнал (з тим самим іменем, як і у
             файла  журналу, що тільки зсунувся). mode вказує права допуску в
             вісімковій системі (так як у  chmod(2),  owner  вказує  власника
             журналу,  а group вказує групу до якої належить журнал. Будь-які
             файлові атрибути можна пропустити у цьому випадку в новому файлі
             будуть  ті  ж  атрибути  як  і в старого журналу, для пропущених
             атрибутів. Цю опцію відміняє nocreate.
      daily  Журнали циклічно переміщуються щодня.
      delaycompress
             Відтерміновує компресію попереднього журналу до наступного циклу
             ротації. Ця опція має ефект тільки в комбінації з compress. Вона
             може використовуватись коли деякій програмі не  можливо  вказати
             закрити  свій  журнал  і тому вона мусить продовжувати писати ще
             деякий час в попередній журнал.
      extension ext
             Суфікс журналу що додається до старих  журналів  після  ротації.
             Якщо  використовується архівування, то закінчення архіву (звично
             .gz) додається останнім.
      ifempty
             Вказує циклічно переміщувати пусті журнали, змінює цю  поведінку
             опція notifempty (без задання використовується ifempty).
      include file_or_directory
             Зчитує  файл  як  параметр там де появляється директива include,
             так ніби він був включений  в  командну  стрічку.  Якщо  вказано
             каталог,  більшість  файлів  з каталогу зчитуються в алфавітному
             порядку перед тим як продовжиться виконання інструкцій з файла в
             котрому міститься include. Ігноруються тільки не регулярні файли
             (тобто каталоги та посилання) і файли чиї імена закінчуються  на
             одне  з  заборонених закінчень, які вказані директивою tabooext.
             Директива  include  не  повинна  появлятись  в  середині  самого
             визначення журналу.
      mail address
             Коли  циклічне  зсування  доходить  до кінця, то останній журнал
             перед видаленням  відправляється  на  вказану  адресу.  Коли  не
             потрібно   робити  відправку  журналу  то  вказується  директива
             nomail.
      mailfirst
             Коли  використовується  команда  mail,  то  відсилається   щойно
             циклічно переміщений файл замість останнього, що видаляється.
      maillast
             Коли  використовується  команда  mail,  то відсилається останній
             файл, що видаляється замість того, що  щойно  циклічно  зсунувся
             (це - стандартна поведінка).
      missingok
             Якщо файла журналу не існує то програма, замість видачі помилки,
             переходить до наступного. Також дивіться nomissingok.
      monthly
             Журнали циклічно зсуваються коли logrotate  запускається  перший
             раз в місяці (звично це першого числа місяця).
      nocompress
             Старі журнали не архівуються gzip. Також дивіться compress.
      nocopy Не  копіювати оригінальний файл журналу і залишити його на місці
             (змінює опцію copy).
      nocopytruncate
             Не урізувати оригінальний  файл  журналу  після  створення  його
             копії (це змінює опцію copytruncate).
      nocreate
             Не  створюється новий файл після ротації (змінюється опцією cre‐
             ate).
      nodelaycompress
             Не відтерміновувати  архівацію  попередньо  зсунутого  файла  до
             наступного циклу (поведінка змінюється опцією delaycompress).
      nomail Не відсилати нікому старий журнал.
      nomissingok
             Якщо  файл журналів не існує, видає помилку. Цe - поведінка поза
             вибором.
      noolddir
             Старі журнали циклічно зсуваються в тому самому каталозі,  що  і
             сам журнал (це змінюється опцією olddir).
      nosharedscripts
             Запускає  перед  ротаційний prerotate та після ротаційні postro‐
             tate сценарії для кожного журналу котрий циклічно зсувається (це
             -  поведінка  поза  вибором,  яку  можна поміняти опцією shared‐
             scripts).
      notifempty
             Не зсувати циклічно пусті журнали (це змінює опцію ifempty).
      olddir directory
             Старі журнали переміщаються в каталог для ротації.  Каталог  має
             знаходитись на тому самому фізичному пристрої що й журнали. Коли
             використовується ця опція всі старі версії журналів  знаходяться
             в цьому каталозі. Опцію можна змінити noolddir.
      postrotate/endscript
             Стрічки  між  postrotate  і  endscript  (обидві  з мусять бути в
             окремій  стрічці)  виконуються  після   ротації   журналів.   Ця
             директива  може тільки появлятись в середені визначення журналу.
             також дивіться prerotate.
      prerotate/endscript
             Стрічки між prerotate  і  endscript  (обидві  з  мусять  бути  в
             окремій   стрічці)   виконуються  перед  ротацією  журналів.  Ця
             директива може тільки появлятись в середені визначення  журналу.
             Також дивіться postrotate.
      rotate count
             Журнал  циклічно  зсувається  <count>  разів перед видаленням чи
             відправкою почтою на адрес вказаний у директиві mail. Якщо count
             рівне   0,   стара  версія  журналу  видаляється  і  ротація  не
             відбувається.
      size size
             Журнал циклічно зсувається коли  він  стає  більшим  за  size  в
             байтах.  Якщо вкінці є M, то розмір рахується в мегабайтах. Якщо
             стоїть k, то розмір рахується в кілобайтах.  Так  допустимими  є
             значення 100, 100k, і 100M.
      sharedscripts
             Звично  prescript і postscript запускаються для кожного журналу,
             який циклічно зсувається,  що  означає  запуск  одного  і  тогож
             сценарію   знову   для   кожного  журналу  що  відповідає  умові
             (наприклад /var/log/news/*.log). Якщо вказано опцію sharedscript
             сценарій  запускається  тільки  раз,  байдуже  скільки  журналів
             задовольняють умові. Однак  якщо  ні  один  журнал  не  потребує
             ротації  сценарій  не  запускається  взагалі.  Цю  опцію  змінює
             nosharedscripts.
      start count
             Вказує номер з якого починати рахувати ротації.  Наприклад  якщо
             вкажете  0, старі журнали будуть створюватись з суфіксом .0 який
             додасться до назви первинного журналу. Якщо вкажете 9  то  архів
             журналів   будуть   з  суфіксами,  що  почнуться  з  .9,  а  0-8
             пропустяться. Журнал все одно буде  зсуватись  визначену  опцією
             count кількість разів.
      tabooext [+] list
             Змінює   поточний   список   заборонених  розширень  (  дивіться
             директиву include де є інформація  про  заборонені  розширення).
             Якщо  стоїть  +  перед  списком  розширень  то  поточний  список
             поповнюється, інакше заміняється. При старті список  заборонених
             розширень містить: .rpmorig, .rpmsave, ,v, .swp, .rpmnew, та ~.
      weekly Журнал  циклічно зсувається, якщо поточний день тижня менший ніж
             день тижня коли відбувалась остання ротація,  або  коли  пройшло
             більш  ніж  тиждень  з  часу  останньої  ротації.  Тобто журнали
             циклічно зсуваються в перший день тижня, але працює  краще  коли
             logrotate запускається не кожної ночі.


Файл конфігурації logrotate reads everything about the log files it should be handling from the series of configuration files specified on the command line. Logrotate читає все по файлах журналів слід звернення із серії конфігураційних файлів, зазначених у командному рядку. Each configuration file can set global options (local definitions override global ones, and later definitions override earlier ones) and specify logfiles to rotate. Кожен файл конфігурації може встановити глобальні опції (місцеві визначення перевизначають глобальні, а потім і визначення перевизначають більш ранні) і вкажіть логах обертатися. A simple configuration file looks like this: Простий файл конфігурації виглядає наступним чином:

# sample logrotate configuration file # Зразок Logrotate конфігураційний файл

compress стискати

/var/log/messages { / VAR / Журнал / повідомлення {

   rotate 5 обертати 5
   weekly тижні
   postrotate postrotate
       /usr/bin/killall -HUP syslogd / USR / BIN / killall-HUP Syslogd
   endscript endscript

} }

"/var/log/httpd/access.log" /var/log/httpd/error.log { "/ VAR / Журнал / HTTPD / access.log" / VAR / Журнал / HTTPD / error.log {

   rotate 5 обертати 5
   mail www@my.org пошта www@my.org
   size 100k Розмір 100k
   sharedscripts sharedscripts
   postrotate postrotate
       /usr/bin/killall -HUP httpd / USR / BIN / killall-HUP HTTPD
   endscript endscript

} }

/var/log/news/* { / VAR / Журнал / Новини / * {

   monthly щомісячно
   rotate 2 обертаються 2
   olddir /var/log/news/old OLDDIR / VAR / Журнал / Новини / старі
   missingok missingok
   postrotate postrotate
       kill -HUP 'cat /var/run/inn.pid' вбити-HUP 'кіт / VAR / бігти / inn.pid "
   endscript endscript
   nocompress NOCOMPRESS

} } [1]

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти