Dochází vám místo na disku v systému Linux? Zkontrolujte své protokoly!

Klíčové věci

  • Systémové protokoly Linuxu mohou zabírat značné množství místa na disku.
  • Váš systém obvykle zkomprimuje starší soubory protokolu, aby se ušetřilo místo na disku.
  • K zobrazení protokolů a identifikaci problematických procesů můžete použít příkaz journalctl nebo tail -f.

Zatímco linuxové systémy mají pověst štíhlých, možná zjistíte, že vám najednou dochází místo na disku. Proč se to stalo? Největší vodítko a možná i největší viník najdete ve vašich systémových protokolech Linuxu.

Proč protokoly zabírají tolik místa na disku?

Protokoly jsou důležitou součástí správy vašeho systému Linux. Můžete vidět, co se děje s vaším počítačem, a můžete také řešit problémy, které se vyskytnou. Logovací démoni Linuxu jsou podobné Prohlížeči událostí ve Windows. Záznamy obvykle nezabírají mnoho místa. Je to proto, že většina distribucí bude automaticky spravovat, kolik místa zabírají na vašem disku.

Linuxové protokoly byly historicky prosté textové soubory, ale s mnoha významnými distribucemi přecházejícími na systemd jsou to binární soubory, které spravuje journald, služba systemd. Alternativně bude vaše distribuce používat buď rsyslog nebo syslog-ng.

  Jak pořizovat snímky obrazovky z terminálu Linux pomocí Scrot

Protože staré protokoly nejsou relevantní a velké archivy mohou zabírat místo, váš systém je obvykle „otočí“ – archivuje, komprimuje a nakonec smaže – aby ušetřil místo na disku pro věci, které skutečně chcete.

I když si možná nemyslíte, že by protokoly zabíraly mnoho místa, nefunkční proces může zaplnit vaše protokoly rychleji, než je systém dokáže otočit.

Pokud zkontrolujete místo na disku a zjistíte, že vám najednou dochází a víte, že jste v poslední době nestahovali žádné velké soubory, může být příčinou problém s protokoly vašeho systému Linux. Budete muset zjistit, co zaplňuje vaše systémové protokoly, a opravit to.

Pomocí příkazu du -h můžete zkontrolovat, kolik místa na disku používáte:

 du -h /var/log 

Zobrazí se seznam každého podadresáře spolu s celkovým množstvím místa, které zabírá:

Hledání vašich protokolů

Pokud používáte moderní linuxové distro se systemd, použijete k prohlížení protokolů program journalctl; journald obvykle ukládá protokoly do adresářů /var/log/journal nebo /run/log/journal, v závislosti na distribuci.

Chcete-li zobrazit protokoly, zadejte do příkazového řádku příkaz journald. Existují další užitečné možnosti příkazového řádku. Chcete-li zobrazit zaváděcí zprávy, použijte volbu -b:

 journalctl -b 

Pomocí volby -f můžete v reálném čase prohlížet zprávy protokolu vašeho systému.

  Jak nainstalovat Discord na Windows a Linux (příkazový řádek)

Pokud vaše distribuce nepoužívá systemd, najdete logy v adresáři /var/log. I se systémem systemd některé programy stále ukládají své protokoly do tohoto adresáře. Jedná se o běžné textové soubory, které můžete prozkoumat pomocí nástroje, jako je pager, například less.

Chcete-li například přečíst systémový protokol:

 less /var/log/syslog

Uvidíte celý obsah souboru protokolu, který může obsahovat tisíce řádků:

Můžete to také sledovat v reálném čase pomocí volby -f příkazu tail:

 tail -f /var/log/syslog

Jak Linux otáčí soubory protokolu

V adresáři /var/log si můžete všimnout souborů s názvy končícími na „log.N.gz“, kde N je číslo. To je výsledek toho, že systém otáčí starší protokoly. Většina distribucí má nástroj, který to provede automaticky, zvaný „logrotate“. logrotate je obvykle nastaven tak, aby běžel jako úloha cron nebo systémový časovač.

Ve výchozím nastavení bude většina distribucí spouštět logrotate denně. logrotate komprimuje starší protokoly pomocí gzip, o čemž svědčí přípony souborů „.gz“. K tomu používá prahovou hodnotu, jako je věk nebo velikost souboru, a další prahovou hodnotu pro případné odstranění starých souborů protokolu.

Výchozí možnosti logrotate jsou dostatečné pro většinu uživatelů stolních počítačů. Chování logrorate můžete vyladit úpravou souboru /etc/logrotate.conf jako superuživatel a také úpravou souborů cron nebo systemd vašeho systému, ale tyto operace jsou skutečně relevantní pouze pro administrátory serveru.

  Jak odstranit soubory a adresáře v terminálu Linux

Je lepší opravit to, co zaplňuje vaše protokoly, než upravovat konfigurační soubory, abyste ušetřili místo na disku. Pokud absolutně musíte změnit konfiguraci, můžete si přečíst logrotate manuálovou stránku.

Které protokoly lze bezpečně smazat?

Pokud vše ostatní selže a vy zoufale chcete uvolnit místo na disku, můžete archivované soubory protokolu končící na „.gz“ ručně smazat dříve, než to udělá logrotate. Můžete použít rm, ale budete jej muset spustit jako superuživatel, protože tyto soubory patří do systému:

 sudo rm /var/syslog/syslog.*gz 

Tento příkaz odstraní všechny soubory obsahující „syslog“. a končí na „gz“.

Při spouštění příkazů přes sudo buďte vždy velmi opatrní, zejména destruktivní příkazy jako rm!

Za normálních okolností byste neměli mazat soubory v systémových adresářích, aniž byste plně rozuměli důsledkům, ale archivované protokoly nezpůsobí žádné problémy, pokud chybějí. Pokud máte problém, možná budete muset odkázat na starší protokoly.

Jak opravit, co zaplňuje vaše protokoly

Nejlepší způsob, jak zjistit, co zaplňuje vaše protokoly, je sledovat protokoly s volbami journalctl nebo tail -f. Nejlepším řešením je opakování chybových zpráv.

Budete se muset vypořádat s problematickým procesem, abyste ušetřili místo na disku. Pokud nevíte, co chybu způsobuje, můžete prohledat web nebo požádat o pomoc na kanálech podpory vašeho distribuce. Až to konečně opravíte, můžete starší protokoly bezpečně smazat. Nyní byste měli mít mnohem více místa na disku.