Logrotate: як отримати доступ до вихідного файлу в postrotate


15

Я Nginxщодня (з dateext) обертую журнали . Після обертання я хочу проаналізувати файл за день, що минув, і скласти електронний лист із кількістю помилок, повернутих сервером Nginx.

Як я можу отримати доступ до вихідного файлу в розділі postrotate / endcript logrotate?


Чи можете ви детальніше розробити?
Халед

Зроблено. Вибачте, я подумав, що це досить зрозуміло. :)
ibz

Відповіді:


4

Я не знаю жодних змінних, які ви можете використовувати, якщо це те, що ви шукаєте. Однак одразу після обертання журналу ви повинні точно знати ім’я, до якого було повернуто файл, виходячи з конфігурації, яку ви встановили для обертання ( /var/log/somefile.1тощо).

Можливо, було б простіше відповісти, якби ви описали актуальну проблему, яку ви намагаєтеся вирішити?


Я вважав, що проблема не має значення. Пояснив це зараз детальніше. Так, я можу просто використати дату, щоб отримати ім’я файлу, але я сподівався, що зможу отримати його через якусь змінну чи щось таке, що мало б більше сенсу.
ibz

3
Схоже, ларси вдарили саме про те, що ви хочете. $ 1 - це змінна, яку ви шукаєте.
відмітка

17

Якщо ви не використовуєте директиву "sharedscripts", то ваш сценарій postrotate отримує як $ 1 файл, який ініціював обертання журналу. Це може допомогти, якщо ви намагаєтесь використовувати загальний сценарій із кількома строгратами логротата. Тобто, враховуючи щось подібне:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

Якщо будь-які відповідні файли потрібно повернути, ваш скрипт буде викликаний на 1 долар, встановлений на "/var/log/sample1.log", "/var/log/sample2.log" або "/var/log/sample3.log" " по мірі необхідності. Потім ви можете додати ".1", щоб знайти файл, який щойно повернутий.

Якщо ви використовуєте параметр "спільні сценарії", вам буде викликано скрипт із $ 1, встановленим на "/var/log/sample1.log /var/log/sample evidence23Sense.log" (що допоможе вам визначити певну строфу, але не точний файл).

Сподіваємось, це дає вам місце для початку. Зауважте, що це буде працювати лише для logrotate> v3.7.5.


1
Зручно. Насправді, і сценарій до, і після обертання, схоже, отримують поворотне ім'я файлу як $ 1, саме про це і задається питання.
відмітка

1
@mark скрипт отримує ім'я вхідного файла, а не вихідного файлу
kbolino
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.