Skip to main content

Journalctl - справочник

Journalctl — это утилита для работы с системным журналом systemd.
Она объединяет логи всех сервисов и ядра в единое хранилище, доступное через команды фильтрации.
В отличие от классических /var/log/syslog и /var/log/messages, journalctl позволяет быстро находить ошибки, фильтровать логи по времени, сервисам, приоритетам.

Просмотр всех логов

Простая команда для просмотра системного журнала:

journalctl

Обычно логи будут длинные, поэтому часто используют -e (сразу перейти к концу).

journalctl -e
Просмотр последних событий в реальном времени
journalctl -f

Аналогично tail -f /var/log/syslog. Удобно использовать при отладке сервисов.

Фильтрация по сервису

Посмотреть логи конкретного сервиса:

journalctl -u nginx

В реальном времени:

journalctl -u nginx -f
Фильтрация по времени

Примеры:

journalctl --since "2025-10-01" --until "2025-10-05"   # за указанный период
journalctl --since "2 hours ago"                        # за последние 2 часа
journalctl --since yesterday                            # за вчерашний день
Фильтрация по приоритетам (уровням)

Приоритеты: emerg, alert, crit, err, warning, notice, info, debug.

journalctl -p err        # только ошибки
journalctl -p warning    # предупреждения
journalctl -p info       # информационные сообщения
Просмотр логов загрузки
journalctl -b      # текущая загрузка
journalctl -b -1   # предыдущая загрузка
journalctl -b -2   # позапрошлая загрузка

Очень полезно для анализа причин падения системы или kernel panic.

Просмотр логов ядра
journalctl -k             # сообщения ядра
journalctl -k -p err      # только ошибки ядра
Ограничение количества строк
journalctl -n 50          # последние 50 строк
journalctl -n 100 -u ssh  # последние 100 строк сервиса ssh
Вывод в удобочитаемом или машинном формате
journalctl -o short       # стандартный вывод
journalctl -o json-pretty # JSON-формат, удобно для анализа
journalctl -o cat         # только текст сообщения
Типичные ситуации и примеры использования
  • Сервис не запускается — смотрим причину:
    journalctl -u имя_сервиса -xe
  • Отслеживание ошибок SSH-подключений:
    journalctl -u ssh -p err -f
  • Анализ падения Nginx:
    journalctl -u nginx --since "10 min ago"
  • Поиск "OOM-killer" (система убила процесс из-за нехватки памяти):
    journalctl -k | grep -i oom
  • Выяснить, кто перезагружал систему:
    journalctl _COMM=systemd-logind | grep "Power key pressed"
Типичные ошибки и решения
  • Ошибка: логи не сохраняются после перезагрузки.
    Решение: включить постоянное хранение:
    sudo mkdir -p /var/log/journal
    sudo systemctl restart systemd-journald
  • Ошибка: слишком большой размер логов.
    Решение: очистка и настройка лимита:
    sudo journalctl --vacuum-time=7d      # оставить только 7 дней
    sudo journalctl --vacuum-size=500M    # ограничить размер 500 МБ