Důležité body
- Záznamy událostí v Linuxu mohou zabírat značnou část úložného prostoru.
- Systém obvykle komprimuje starší záznamy, aby se uvolnilo místo na disku.
- K prohlížení záznamů a identifikaci problematických procesů lze použít příkaz journalctl nebo tail -f.
Přestože se linuxové systémy vyznačují svou efektivitou, můžete se setkat se situací, kdy vám nečekaně dojde místo na disku. Co je příčinou? Klíč k řešení a možná i hlavní viník se skrývá ve vašich systémových záznamech událostí.
Proč záznamy událostí zabírají tolik místa?
Záznamy událostí hrají klíčovou roli ve správě systému Linux. Umožňují sledovat dění v počítači a také pomáhají při řešení případných problémů. Logovací procesy v Linuxu fungují podobně jako Prohlížeč událostí ve Windows. Záznamy obvykle nezabírají mnoho místa, protože většina distribucí automaticky reguluje jejich spotřebu diskového prostoru.
Historicky byly záznamy v Linuxu prosté textové soubory. Nicméně, s přechodem mnoha významných distribucí na systemd, se jedná o binární soubory spravované službou journald, která je součástí systemd. Alternativně může vaše distribuce používat rsyslog nebo syslog-ng.
Protože staré záznamy událostí nejsou relevantní a velké archivy mohou zabírat mnoho prostoru, systém je obvykle „rotuje“ – archivuje, komprimuje a nakonec odstraňuje, aby se uvolnilo místo pro důležitější data.
I když se může zdát, že záznamy nezabírají mnoho místa, nefunkční proces může zaplnit záznamy rychleji, než je systém schopen je zpracovat.
Pokud zjistíte, že vám náhle dochází místo na disku, aniž byste stahovali velké soubory, může být problém v záznamech vašeho systému Linux. Je nutné zjistit, co zaplňuje záznamy a opravit to.
Pro kontrolu využití diskového prostoru můžete použít příkaz du -h:
du -h /var/log
Výsledkem bude seznam všech podadresářů a celkový prostor, který zabírají:
Kde najít záznamy událostí
Pokud používáte moderní distribuci Linuxu se systemd, použijte pro zobrazení záznamů program journalctl. Služba journald obvykle ukládá záznamy do adresářů /var/log/journal nebo /run/log/journal, v závislosti na distribuci.
Pro zobrazení záznamů zadejte do příkazové řádky journalctl. Existují další užitečné možnosti příkazového řádku. Například pro zobrazení zpráv při startu systému použijte volbu -b:
journalctl -b
Pomocí volby -f můžete sledovat záznamy v reálném čase.
Pokud vaše distribuce nepoužívá systemd, naleznete záznamy v adresáři /var/log. I se systemd některé programy stále ukládají své záznamy do tohoto adresáře. Jsou to obyčejné textové soubory, které můžete prozkoumat například pomocí programu less.
Pro čtení systémového záznamu můžete použít:
less /var/log/syslog
Zobrazí se celý obsah záznamu, který může obsahovat tisíce řádků:
Záznamy můžete sledovat v reálném čase pomocí volby -f příkazu tail:
tail -f /var/log/syslog
Jak Linux rotuje záznamy
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 rotace starších záznamů systémem. Většina distribucí má nástroj, který to provádí automaticky, nazvaný „logrotate“. Logrotate je obvykle nastaven tak, aby běžel jako cron úloha nebo systémový časovač.
Ve výchozím nastavení většina distribucí spouští logrotate denně. Logrotate komprimuje starší záznamy pomocí gzip, což je patrné z přípon souborů „.gz“. K tomu používá prahové hodnoty, jako je stáří nebo velikost souboru, a také prahovou hodnotu pro případné odstranění starých záznamů.
Výchozí nastavení logrotate je dostačující pro většinu uživatelů stolních počítačů. Chování logrotate můžete upravit úpravou souboru /etc/logrotate.conf jako superuživatel a také úpravou cron nebo systemd časovačů vašeho systému. Tyto operace jsou však relevantní především pro administrátory serverů.
Je lepší opravit příčinu zaplňování záznamů, než upravovat konfigurační soubory pro úsporu místa. Pokud je změna konfigurace nezbytná, přečtěte si manuálovou stránku logrotate.
Které záznamy je bezpečné odstranit?
Pokud vše ostatní selže a zoufale potřebujete uvolnit místo na disku, můžete archivované záznamy končící na „.gz“ smazat ručně dříve, než to provede logrotate. Můžete použít rm, ale musíte ho spustit jako superuživatel, protože tyto soubory patří systému:
sudo rm /var/syslog/syslog.*gz
Tento příkaz odstraní všechny soubory obsahující „syslog“ a končící na „gz“.
Při spouštění příkazů pomocí sudo buďte vždy velmi opatrní, zvláště u destruktivních příkazů jako rm!
Za normálních okolností byste neměli mazat soubory v systémových adresářích, pokud plně nerozumíte důsledkům. Archivované záznamy však nezpůsobí žádné problémy, pokud chybí. V případě problému se ale možná budete muset podívat do starších záznamů.
Jak opravit problém s plnými záznamy
Nejlepší způsob, jak zjistit, co plní vaše záznamy, je sledovat záznamy pomocí voleb journalctl nebo tail -f. Nejlepším řešením je zastavení opakovaných chybových zpráv.
Pro úsporu místa na disku se musíte vypořádat s problematickým procesem. Pokud neznáte příčinu chyby, prohledejte web nebo požádejte o pomoc na kanálech podpory vaší distribuce. Jakmile problém vyřešíte, můžete staré záznamy bezpečně smazat. Měli byste mít mnohem více místa na disku.