Kończy się miejsce na dysku w systemie Linux? Sprawdź swoje logi!

  • Dzienniki systemu Linux mogą zajmować znaczną ilość miejsca na dysku.
  • Twój system zwykle kompresuje starsze pliki dziennika, aby zaoszczędzić miejsce na dysku.
  • Do przeglądania dzienników i identyfikowania problematycznych procesów można użyć polecenia journalctl lub tail -f.

Chociaż systemy Linux cieszą się opinią smukłych, może się okazać, że nagle zaczyna brakować miejsca na dysku. Dlaczego tak się stało? Największą wskazówkę i prawdopodobnie największego winowajcę można znaleźć w dziennikach systemu Linux.

Dlaczego dzienniki zajmują tak dużo miejsca na dysku?

Dzienniki są ważną częścią zarządzania systemem Linux. Możesz zobaczyć, co się dzieje z Twoim komputerem, a także rozwiązać pojawiające się problemy. Demony rejestrowania w systemie Linux są podobne do Podglądu zdarzeń w systemie Windows. Dzienniki zwykle nie zajmują dużo miejsca. Dzieje się tak, ponieważ większość dystrybucji automatycznie zarządza ilością miejsca zajmowanego na dysku.

Dzienniki Linuksa historycznie były zwykłymi plikami tekstowymi, ale w związku z przejściem wielu głównych dystrybucji na systemd są to pliki binarne zarządzane przez usługę systemową journald. Alternatywnie, Twoja dystrybucja będzie używać rsyslog lub syslog-ng.

Ponieważ stare dzienniki są nieistotne, a duże archiwa mogą zajmować miejsce, system zazwyczaj je „obróci” — zarchiwizuje, skompresuje i ostatecznie usunie — aby zaoszczędzić miejsce na dysku na potrzebne rzeczy.

Chociaż możesz nie myśleć, że dzienniki zajmują dużo miejsca, nieprawidłowo działający proces może zapełnić dzienniki szybciej, niż system będzie mógł je obrócić.

Jeśli sprawdzisz miejsce na dysku i nagle zauważysz, że zaczyna go brakować i wiesz, że nie pobrałeś ostatnio żadnych dużych plików, przyczyną może być problem z logami systemu Linux. Będziesz musiał dowiedzieć się, co zapełnia dzienniki systemowe i naprawić to.

Możesz sprawdzić, ile miejsca na dysku używasz za pomocą polecenia du -h:

 du -h /var/log 

Zobaczysz listę każdego podkatalogu wraz z całkowitą ilością zajmowanego przez niego miejsca:

Znajdowanie dzienników

Jeśli używasz nowoczesnej dystrybucji Linuksa z systemd, do przeglądania dzienników będziesz używać programu journalctl; journald zazwyczaj przechowuje logi w katalogach /var/log/journal lub /run/log/journal, w zależności od dystrybucji.

Aby wyświetlić dzienniki, wpisz polecenie journald w wierszu poleceń powłoki. Istnieją inne przydatne opcje wiersza poleceń. Aby wyświetlić komunikaty rozruchowe, użyj opcji -b:

 journalctl -b 

Możesz przeglądać komunikaty dziennika systemu w czasie rzeczywistym za pomocą opcji -f.

Jeśli Twoja dystrybucja nie używa systemd, dzienniki znajdziesz w katalogu /var/log. Nawet w przypadku systemu systemd niektóre programy nadal przechowują swoje dzienniki w tym katalogu. Są to zwykłe pliki tekstowe, które można przeglądać za pomocą narzędzia takiego jak pager, np. less.

Na przykład, aby odczytać dziennik systemowy:

 less /var/log/syslog

Zobaczysz pełną zawartość pliku dziennika, który może zawierać tysiące wierszy:

Możesz także monitorować go w czasie rzeczywistym za pomocą opcji -f polecenia tail:

 tail -f /var/log/syslog

Jak Linux zmienia pliki dziennika

W katalogu /var/log możesz zauważyć pliki o nazwach kończących się na „log.N.gz”, gdzie N jest liczbą. Jest to wynikiem rotacji starszych dzienników systemu. Większość dystrybucji ma narzędzie, które zrobi to automatycznie, zwane „logrotate”. logrotate jest zwykle skonfigurowany do działania jako zadanie cron lub zegar systemowy.

Domyślnie większość dystrybucji będzie uruchamiać logrotate codziennie. logrotate kompresuje starsze logi za pomocą programu gzip, o czym świadczą rozszerzenia plików „.gz”. W tym celu wykorzystuje próg, taki jak wiek lub rozmiar pliku, oraz inny próg, aby ostatecznie usunąć stare pliki dziennika.

Domyślne opcje logrotate są wystarczające dla większości użytkowników komputerów stacjonarnych. Możesz dostosować zachowanie logrorate, edytując plik /etc/logrotate.conf jako superużytkownik, a także edytując systemowe pliki cron lub systemowe pliki timera, ale te operacje są tak naprawdę istotne tylko dla administratorów serwerów.

Lepiej jest naprawić to, co zapełnia dzienniki, niż poprawiać pliki konfiguracyjne, aby zaoszczędzić miejsce na dysku. Jeśli koniecznie musisz zmienić konfigurację, możesz przeczytać strona podręcznika logrotate.

Które dzienniki można bezpiecznie usunąć?

Jeśli wszystko inne zawiedzie i desperacko pragniesz zwolnić miejsce na dysku, możesz ręcznie usunąć zarchiwizowane pliki dziennika z końcówką „.gz”, zanim zrobi to logrotate. Możesz użyć rm, ale będziesz musiał uruchomić go jako superużytkownik, ponieważ te pliki należą do systemu:

 sudo rm /var/syslog/syslog.*gz 

To polecenie usunie wszystkie pliki zawierające „syslog”. i kończąc na „gz”.

Zawsze bądź bardzo ostrożny podczas uruchamiania poleceń za pośrednictwem sudo, zwłaszcza poleceń destrukcyjnych, takich jak rm!

Zwykle nie należy usuwać plików w katalogach systemowych bez pełnego zrozumienia konsekwencji, ale zarchiwizowane dzienniki nie spowodują żadnych problemów, jeśli ich brak. Jeśli jednak masz problem, być może będziesz musiał odwołać się do starszych dzienników.

Jak naprawić to, co zapełnia Twoje dzienniki

Najlepszym sposobem, aby dowiedzieć się, co wypełnia Twoje dzienniki, jest śledzenie dzienników za pomocą opcji journalctl lub tail -f. Najlepszym rozwiązaniem jest powtarzanie komunikatów o błędach.

Będziesz musiał poradzić sobie z szkodliwym procesem, aby zaoszczędzić miejsce na dysku. Jeśli nie wiesz, co jest przyczyną błędu, możesz przeszukać sieć lub poprosić o pomoc na kanałach pomocy technicznej swojej dystrybucji. Kiedy już to naprawisz, możesz bezpiecznie usunąć starsze logi. Powinieneś mieć teraz znacznie więcej miejsca na dysku.