GNU/Linux >> Znalost Linux >  >> Linux

Existuje správný způsob, jak vymazat protokoly?

Řešení 1:

Můžete použít:

> /var/log/mail.log

To zkrátí protokol, aniž byste museli soubor upravovat. Je to také spolehlivý způsob, jak získat prostor zpět. Někdy lidé dělají tu chybu, že v protokolu použijí rm a poté znovu vytvoří název souboru. Pokud má soubor otevřený jiný proces, nezískáte místo zpět, dokud tento proces nezavře jeho popisovač a vy můžete zkazit jeho oprávnění.

Také pokud sledujete obsah protokolu, můžete použít tail příkaz:

tail -f /var/log/mail.log

Ctrl-C odlomí okraj.

Řešení 2:

Ano, existuje správný způsob:nevymažete logy vůbec. Otáčíte jim. Rotace zahrnuje přepnutí výstupu protokolu do nového souboru pod stejným názvem, přičemž předchozí soubory protokolu N budou uloženy pod sadou N souvisejících názvů souborů.

Jak se protokoly otáčí, závisí především na tom, jak je zapisujete. To je často přehlížený bod. Některé ze zde uvedených odpovědí se toho alespoň dotýkají a zmiňují, že některé protokolovací programy uchovávají otevřený popisovač souboru pro soubor protokolu, takže pouhé smazání souboru neuvolní místo a dokonce ani nepřepne výstup na nový soubor protokolu.

Pokud je program zapisující soubor protokolu multilog z daemontools například balíček, pak neuděláte vůbec nic pro rotaci protokolů — žádné ruční skripty, žádné cron pracovní místa. Jednoduše řekněte multilog že výstup protokolu je do adresáře a sám bude udržovat automaticky otočenou a velikostně omezenou sadu N souborů protokolu v tomto adresáři.

Pokud je program zapisující soubory protokolu svlogd z runit pro jiný příklad pak platí v podstatě totéž. Neděláte vůbec nic kromě namíření nástroje na adresář. Sám bude udržovat automaticky otočenou a velikostně omezenou sadu N log souborů v tomto adresáři.

Pokud používáte rsyslog zapisovat soubory protokolu, pak lze programu protokolování říci, aby se zastavil poté, co soubor protokolu dosáhne určité velikosti a spustil skript. Musíte napsat jádro skriptu, abyste skutečně přejmenovali soubor protokolu a smazali staré soubory protokolu na základě omezení celkové velikosti, ale alespoň protokolovací program uzavřel soubor a pozastavil zápis protokolu, zatímco se to děje.

Starý syslogd způsob rotace protokolů, stále očekávaný protokolovacími programy, jako je syslog-ng a jehož příkladem jsou nástroje jako logrotate zmíněno djangofan v jiné odpovědi zde je poněkud náhodnější. Jeden spustí cron úloha, která pravidelně přejmenovává soubory protokolu a restartuje démona protokolování (pomocí jakéhokoli správce démona, pod kterým běží). Problém s tím samozřejmě je, že to nevynucuje omezení celkové velikosti. V pomalých týdnech lze získat N velmi malých denních souborů protokolu, zatímco v rušných dnech lze získat 1 velmi velký soubor protokolu, který značně překračuje limit velikosti.

To je důvod, proč novější a lepší nástroje jako multilog a svlogd mít možnosti konfigurace velikosti souboru a skutečně kontrolovat velikosti souborů protokolu, samozřejmě. Svět se dozvěděl, že dotazování protokolů podle plánu pomocí cron pracovních míst, nebo dokonce logrotate démon, ponechává okna pro špatnou velikost a správné místo pro tyto kontroly, a tak důsledně vynutit administrátorem definovaná omezení velikosti, aby soubory protokolu nikdy nepohltily oddíl, na kterém jsou, je v první řadě v programu, který soubory ve skutečnosti zapisuje.

Řešení 3:

Můžete použít i toto..

truncate /opt/package/logs/*.log --size 0

Zde budou všechny soubory protokolu v /opt/package/logs prázdné..

Řešení 4:

Ano, existuje nástroj pro linux s názvem LogRotate.

Řešení 5:

Pokud je důvodem pro vymazání protokolu uvolnění místa, můžete k nim zařadit /dev/null, aniž byste přerušili zápis programů do něj. Nikdy je nemažte! některý software si může stěžovat tím, že přestane fungovat nebo úplně ignoruje protokol až do příštího restartu

cat /dev/null > /path/to/logfile

# to empty all the logs in a directory
for i in /var/log/*; do cat /dev/null > $i; done

Linux
  1. Jak vymazat Journalctl?

  2. Jaký je pohodlný způsob kontroly toho, co se přidává do souboru protokolu v reálném čase?

  3. Najít soubor protokolu Firefoxu?

  1. Jak vyprázdnit soubor protokolu v Linuxu

  2. Existuje způsob, jak „uniq“ podle sloupce?

  3. Existuje způsob, jak určit dekomprimovanou velikost souboru .bz2?

  1. Existuje způsob, jak upravit existující záložku nautilus (správce souborů)?

  2. Log rotace stdout?

  3. Existuje způsob, jak obnovit přerušený scp souboru?