Linux

Полное руководство по journalctl: управление системными журналами Linux

Это руководство подробно объясняет, как использовать journalctl для просмотра, фильтрации и анализа системных журналов в Linux. Вы научитесь диагностировать проблемы и мониторить систему.

Обновлено 14 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+Fedora 35+

Введение / Зачем это нужно

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

Требования / Подготовка

Перед началом убедитесь, что:

  • Ваша система использует systemd: Проверьте, выполнив systemctl status — если команда доступна, systemd установлен.
  • Доступ к терминалу: Вам понадобится терминал или SSH-подключение к серверу.
  • Права sudo: Для просмотра всех журналов, включая защищённые, используйте sudo journalctl. Без sudo вы увидите только свои логи.
  • Пакет systemd-journald: Обычно предустановлен. Если нет, установите через менеджер пакетов (например, apt install systemd на Debian/Ubuntu).

Шаг 1: Просмотр всех записей журнала

Базовая команда journalctl без аргументов выводит все записи от самой ранней до последней. По умолчанию используется less-подобный пейджер для навигации.

journalctl

Для вывода без паузы (прямой поток) добавьте --no-pager:

journalctl --no-pager

Чтобы увидеть только последние записи, используйте -n с количеством строк:

journalctl -n 50  # последние 50 записей

Шаг 2: Фильтрация по времени

Journalctl позволяет фильтровать записи по временному диапазону с помощью --since и --until. Время можно указывать в различных форматах.

Пример: записи с 1 января 2024 года:

journalctl --since "2024-01-01"

Диапазон: с 1 по 2 января 2024:

journalctl --since "2024-01-01" --until "2024-01-02"

Относительное время: за последний час:

journalctl --since "1 hour ago"

Или с конкретного времени суток:

journalctl --since "09:00" --until "10:00"

Шаг 3: Фильтрация по системной службе

Чтобы просмотреть логи конкретной службы systemd, используйте флаг -u с именем юнита.

Например, логи службы SSH:

journalctl -u sshd.service

Для службы Nginx:

journalctl -u nginx.service

Вы можете комбинировать с фильтрацией по времени:

journalctl -u sshd.service --since "today"

Шаг 4: Поиск по ключевым словам и уровням важности

Journalctl поддерживает фильтрацию по уровню важности (priority) с помощью -p. Уровни: emerg, alert, crit, err, warning, notice, info, debug.

Например, только ошибки (err) и критические (crit):

journalctl -p err

Для поиска по тексту используйте конвейер с grep:

journalctl | grep "failed"

Для case-insensitive поиска:

journalctl | grep -i "error"

Комбинируйте фильтры:

journalctl -u nginx.service -p err --since "1 hour ago"

Шаг 5: Экспорт и сохранение логов

Для сохранения журнала в файл перенаправьте вывод:

journalctl > all_logs.txt

Для экспорта в бинарный формат journal (можно импортировать обратно):

journalctl --output=export > logs.journal

Экспорт в JSON для обработки скриптами:

journalctl --output=json > logs.json

Ограничьте размер экспорта, указав количество записей:

journalctl -n 1000 > recent_logs.txt

Шаг 6: Управление размером журнала и очистка

С течением времени журнал может занимать много места. Используйте команды для управления.

Просмотрите текущее использование дискового пространства:

journalctl --disk-usage

Очистите старые записи, оставив только последние, например, 100 МБ:

sudo journalctl --vacuum-size=100M

Удалите записи старше определённого времени, например, 7 дней:

sudo journalctl --vacuum-time=7d

Принудительно ротируйте журнал (создайте новый, начните запись в него):

sudo journalctl --rotate

Эти операции требуют прав sudo.

Проверка результата

После выполнения команд убедитесь, что:

  • Команда journalctl выводит ожидаемые записи (не пустой вывод, если ожидаются логи).
  • Фильтры работают корректно: например, journalctl -u sshd.service показывает логи только SSH.
  • Экспортированные файлы созданы и содержат данные (проверьте размер).
  • При управлении размером, journalctl --disk-usage показывает уменьшенное использование.

Если что-то не работает, перейдите к разделу "Возможные проблемы".

Возможные проблемы

Проблема: journalctl не найден или команда не распознана.
Решение: Убедитесь, что systemd установлен. На очень старых системах или специализированных дистрибутивах может использоваться syslog. Проверьте наличие пакета systemd.

Проблема: Нет доступа к журналам, выводятся только ваши записи.
Решение: Используйте sudo journalctl для полного доступа. Если sudo недоступен, проверьте настройки прав в /etc/systemd/journald.conf (параметр SystemMaxUse и т.д., но это сложнее).

Проблема: Журнал пустой или содержит мало записей.
Решение: Проверьте, что systemd-journald запущен: systemctl status systemd-journald. Также журнал может быть ограничен в размере или настроен на запись только в память (volatile). Проверьте конфигурацию в /etc/systemd/journald.conf.

Проблема: Ошибка при очистке журнала (например, "Failed to open directory").
Решение: Убедитесь, что вы используете sudo для операций ротации и очистки. Также проверьте, не используется ли журнал в данный момент (редко, но возможно).

Проблема: Команда journalctl зависает или медленно выводит.
Решение: Добавьте --no-pager для отключения пейджера. Или ограничьте вывод с помощью -n или фильтров по времени. Большие журналы могут быть медленными.

Часто задаваемые вопросы

Как посмотреть последние записи журнала с помощью journalctl?
Как фильтровать журналы по службе в journalctl?
Что делать, если journalctl не показывает логи?
Как очистить журналы journalctl?

Полезное

Откройте терминал
Просмотрите последние записи
Фильтруйте по времени
Фильтруйте по службе
Поиск по ключевым словам
Экспорт логов в файл