Mám cronjob, který spouští některé skripty Pythonu a generuje masivní soubor protokolu. Jak zabráním tomu, aby se tak zvětšily? Bylo by perfektní, kdyby byl soubor smazán, jakmile dosáhne určité velikosti. Protože každých pár dní má soubor nyní 50 MB, ale mnohem větší a trvá věčnost, než se stáhne a analyzuje chyba na pomalém internetovém připojení. Opravdu chci vidět jen těch posledních 1000 řádků, abych viděl, kde se skript pokazil.
Vím, že bych mohl něco naprogramovat, abych to udělal, ale jen mě zajímalo, jestli Linux nemá něco, o čem jsem nevěděl. Představuji si, že velké soubory protokolu jsou běžným problémem. Děkuji.
Přijatá odpověď:
Obvykle byste měli zaznamenat pouze aktivitu, která vás zajímá, a měli byste program nakonfigurovat tak, aby byl pokud možno méně podrobný.
Jak bylo navrženo, pomocí logrotate je obvyklý způsob práce se soubory protokolu. Ale místo přidávání obsahu do /etc/logrotate.conf
měli byste přidat svou vlastní úlohu do /etc/logrotate.d/
, jinak byste se museli během aktualizací vydání podívat na více rozdílů v konfiguračních souborech.
Zde je příklad, který jsem vytvořil pro skript php:
/var/log/some-php-app/*.log {
daily
rotate 10
delaycompress
compress
notifempty
missingok
}
/var/log/some-php-app/*.log
– Je cesta, kde jsou umístěny soubory protokolu a jejich název. Jak vidíte, můžete také použít zástupné znaky k aplikování pravidla na více než jeden soubor protokolu.- denně – Denně otáčí soubory protokolu. Alternativy:hodinová, týdenní, měsíční, roční, maxsize, maxage
- otočit počet – Soubory se před odstraněním nebo odesláním na adresu uvedenou v direktivě pro poštu několikrát střídají.
- delaycompress – Odloží kompresi předchozího souboru protokolu na další cyklus rotace.
- komprimovat – Komprimuje staré verze souborů protokolu pomocí gzip. Můžete použít
zless
místoless
pro zobrazení souborů. - notifempty – Neotáčí protokol, pokud je prázdný.
- chybějící – Pokud chybí soubor protokolu, přejde k další úloze rotace bez zobrazení chybové zprávy.
Podívejte se na manuálovou stránku logrotate, kde najdete další možnosti.