journalctl

Przegląda i filtruje logi gromadzone przez dziennik systemd (journald).

journalctl to twoje okno na logi systemd. Zamiast grzebać po dziesiątkach plików w /var/log, masz jedno narzędzie, które czyta dziennik gromadzony przez demona journald — wpisy z jądra, usług (unitów), bootów i całej przestrzeni użytkownika w jednym miejscu. Domyślnie pokazuje logi od najstarszych, otwiera je w pagerze (less) i pozwala filtrować po usłudze, czasie, priorytecie czy konkretnym bootcie. Jeśli debugujesz padającą usługę albo szukasz, dlaczego serwer się wczoraj zawiesił — zaczynasz właśnie tutaj.

Składnia i najważniejsze opcje

Podstawowa składnia: journalctl [opcje]

  • -u NAZWA — pokazuje logi tylko dla wskazanej usługi, np. nginx.service.
  • -f — tryb „follow”: dopisuje nowe wpisy na bieżąco, jak tail -f.
  • -b — logi z bieżącego bootu; -b -1 to poprzedni boot.
  • -k — wyłącznie komunikaty jądra (odpowiednik dmesg, ale z historią).
  • -p POZIOM — filtr po priorytecie, np. err albo warning (i wyżej).
  • --since i --until — zakres czasu, np. --since "2026-06-29 08:00" lub --since "1 hour ago".
  • -n LICZBA — ostatnie N wpisów (domyślnie 10), zwykle łączone z -r (odwrotna kolejność, najnowsze na górze).
  • -e — skok od razu na koniec dziennika; -x dokleja podpowiedzi z katalogu komunikatów.

Przykłady użycia

  • journalctl -u sshd -f — śledzi na żywo logi demona SSH, gdy ktoś próbuje się logować.
  • journalctl -b -p err — pokazuje wszystkie błędy z bieżącego bootu; idealne na start diagnozy.
  • journalctl -u nginx --since "today" — logi nginx od północy, bez przewijania całej historii.
  • journalctl -k -b -1 — komunikaty jądra z poprzedniego uruchomienia, np. po nagłym reboocie.
  • journalctl --disk-usage — sprawdza, ile miejsca zżerają dzienniki (potrafią urosnąć).

Częste błędy i pułapki

Najczęstsza niespodzianka: journalctl -b -1 rzuca błędem „Failed to look up boot”, bo dziennik nie jest trwały. Na wielu systemach journald trzyma logi tylko w RAM (/run/log/journal) i kasuje je przy restarcie. Żeby zostały na dysku, potrzebujesz katalogu /var/log/journal oraz Storage=persistent w journald.conf (potem systemctl restart systemd-journald).

Druga pułapka to uprawnienia: zwykły użytkownik widzi tylko swoje wpisy i logi publiczne. Po pełen obraz uruchamiaj przez sudo albo dorzuć użytkownika do grupy systemd-journal.

Pamiętaj też, że journalctl żyje tylko tam, gdzie jest systemd — na starych init.d, w wielu kontenerach czy na macOS go nie uświadczysz; tam wracasz do plików w /var/log. I nie myl -p (priorytet) z czyszczeniem: do przycinania służy --vacuum-size=200M lub --vacuum-time=7d.

Powiązane komendy: dmesg, systemctl, tail, grep, less.