Rain WikiWindows · Linux · Android

logrotate

УслугаПовечето Linux дистрибуции

logrotate е инструмент за Linux, който ротира, компресира и премахва лог файлове, така че те да не запълват диска. Обикновено се стартира веднъж дневно от systemd таймер или cron задача и чете /etc/logrotate.conf, както и правилата за отделните пакети в /etc/logrotate.d/.

1Типично правило

Едно правило описва един или повече лог файлове и директиви като daily или weekly (колко често), rotate 7 (колко стари файла да се пазат), compress (компресиране на старите файлове с gzip), missingok (без грешка, ако файлът липсва), notifempty (пропускане на празни логове) и postrotate ... endscript (команда за изпълнение след ротацията, например за повторно отваряне на лога).

2copytruncate

Някои програми продължават да пишат в същия отворен файл. copytruncate копира лога и след това изрязва оригиналния вместо да го измества, така че програмата запазва файловия си дескриптор; няколко реда, записани по време на копирането, могат да бъдат загубени.

3Тестване

logrotate -d /etc/logrotate.conf се изпълнява в режим за отстраняване на грешки и само извежда какво би се случило. -f принудително стартира ротация, дори ако не ѝ е време.

Как да добавиш и тестваш правило

  1. Създай /etc/logrotate.d/myapp с пътя до лога и директиви, например weekly, rotate 4, compress, missingok, notifempty.
  2. Сухо стартиране: sudo logrotate -d /etc/logrotate.d/myapp
  3. Ако изходът изглежда правилен, принудително пусни една ротация: sudo logrotate -f /etc/logrotate.d/myapp
  4. Провери резултата: ls -l на директорията с логове.

Внимание

  • Грешен шаблон за път може да ротира или изтрие логове на други програми.
  • Логовете, управлявани от systemd journal, се ограничават в journald.conf, а не от logrotate.

Източници

  1. logrotate(8) man7.org
  2. logrotate(8) (Debian) manpages.debian.org

Последен преглед: