logrotate конфигурация и исполнение
Я пытаюсь настроить 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?
Да, вам нужно ежедневно, так как вы хотите, чтобы этот раздел выполнялся каждый день. Это контролирует частоту выполнения раздела, а maxage контролирует, как долго хранятся повернутые файлы. Это две разные вещи.
Что именно делает недостающий?
Отсутствие означает, что logrotate не будет жаловаться / генерировать ошибку, если файл журнала для ротации не существует. Если это не указано, а файл журнала, предназначенный для ротации, отсутствует, logrotate создаст журнал ошибок.
Нужно ли использовать copytruncate, если я указываю daily/maxage 1?
Если copytruncate работает для вас сейчас, не меняйте его. Это относится к исходному файлу журнала
copytruncate дает команду logrotate для создания копии исходного файла (т. е. вращения исходного файла журнала) и обрезания исходного файла до нулевого байтового размера. Это помогает соответствующей службе, которая принадлежит этому файлу журнала, записывать в соответствующий файл.
Чтобы запустить 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