Logrotate: как получить доступ к выходному файлу в postrotate

15

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

Как я могу получить доступ к выходному файлу в разделе postrotate / endcript logrotate?

IBZ
источник
Можете ли вы рассказать подробнее?
Халед
Выполнено. Извините, я думал, что это достаточно ясно. :)
ibz

Ответы:

4

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

Возможно, было бы легче ответить, если бы вы описали реальную проблему, которую пытаетесь решить?

отметка
источник
Я думал, что проблема не имеет значения. Объяснил это более подробно сейчас. Да, я могу просто использовать дату, чтобы получить имя файла, но я надеялся, что смогу получить его через какую-то переменную или что-то еще, что имело бы больше смысла.
2010 года
3
Похоже, жаворонки ударил именно то, что вы хотите. $ 1 - это переменная, которую вы ищете.
отметка
17

Если вы не используете директиву sharedscripts, то ваш скрипт после поворота получает, как $ 1, файл, который вызвал ротацию журнала. Это может помочь, если вы пытаетесь использовать универсальный скрипт с несколькими строками logrotate. То есть, учитывая что-то вроде этого:

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

Если какие-либо соответствующие файлы необходимо повернуть, ваш сценарий будет вызываться с $ 1, для которого установлено значение "/var/log/sample1.log", "/var/log/sample2.log" или "/var/log/sample3.log". «при необходимости. Затем вы можете добавить «.1», чтобы найти файл, который был только что повернут.

Если вы используете опцию «sharedscripts», то ваш сценарий будет вызываться с $ 1, установленным в «/var/log/sample1.log /var/log/sample[23].log» (который поможет вам определить конкретный раздел, но не точный файл).

Надеюсь, это даст вам возможность начать. Обратите внимание, что это будет работать только для logrotate> v3.7.5.

larsks
источник
1
Handy. На самом деле, как до, так и после поворота скрипт, кажется, получает повернутое имя файла как $ 1, что именно то, о чем спрашивает вопрос.
отметка
1
@mark скрипт получает имя входного файла, а не выходного файла
kbolino