3

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

Мое программное обеспечение создает большой файл журнала в /abs/path/to/log/myapp-log.txt . Вот что я хотел бы случиться:

  • Отметка времени каждого файла журнала с расширением даты в его имени
  • В любой момент времени иметь только 1 файл журнала в /abs/path/to/log/ ; поэтому каждый раз, когда журнал вращается и создается новый файл журнала, удаляйте старый

logrotate.conf:

/abs/path/to/log/myapp-log.txt {
    daily
    copytruncate
    create 700 myUser myGroup
    dateext
    maxage 1
    missingok
}

Несколько вещей, в которых я не уверен:

  • Нужно ли указывать daily если я указываю maxage 1?
  • Что именно делает missingok? Что-то о игнорировании системного предупреждения, если там нет файла журнала? Что произойдет, если я не missingok файл журнала, а файла журнала там нет?
  • Нужно ли мне использовать copytruncate если я указываю daily/maxage 1? Эти три параметра кажутся немного излишними, но не уверены, какую роль играет каждый из них.

Во-вторых, как мне убедиться, что это происходит каждый день в полночь? Cron? Я спрашиваю только потому, что где-то читал, что /etc/cron.daily/logrotate запускается автоматически каждый день, но не уверен, как это можно настроить. Заранее спасибо.

1 ответ1

10
  1. Нужно ли указывать ежедневно, если я указываю макс 1?

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

  2. Что именно делает недостающий?

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

  3. Нужно ли мне использовать copytruncate, если я указываю daily / maxage 1?

    Если copytruncate работает для вас сейчас, не меняйте его. Это относится к исходному файлу журнала

    copytruncate дает команду logrotate для создания копии исходного файла (т. е. вращения исходного файла журнала) и обрезания исходного файла до нулевого байтового размера. Это помогает соответствующей службе, которая принадлежит этому файлу журнала, записывать в соответствующий файл.

  4. Чтобы запустить logrotate в полночь

    Есть 2 способа сделать это.

    • Метод 1 - Изменение при запуске ежедневного cron

      Найдите следующие строки в / etc / crontab

      25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
      

      Измените 25 6 (означает 6:25 утра) до 0 0. Это также изменяет ВСЕ ежедневные задания cron, начиная с полуночи.

    • Способ 2 - использовать пользовательскую строку crontab

      Переместить logrotate из стандартного ежедневного расписания cron

      mv /etc/cron.daily/logrotate /etc/logrotate.cronjob
      

      Создать пользовательскую работу cron. Добавьте следующую строку в / etc / crontab

      0 0 * * * root /etc/logrotate.cronjob
      

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .