Linux

Журнал systemd: шпаргалка по командам journalctl

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

Обновлено 16 февраля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:systemd 235+ (Ubuntu 20.04/22.04, Debian 10/11, CentOS 8/Rocky 8, Fedora 35+)

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

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

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

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

  • Ваш дистрибутив использует systemd (проверьте командой systemctl --version). Большинство современных дистрибутивов (Ubuntu 20.04+, Debian 10+, CentOS 8+, Fedora 35+) поддерживают systemd.
  • У вас есть доступ к терминалу с правами sudo для некоторых операций (например, просмотр всех логов или очистка).
  • Сервис systemd-journald активен (обычно запущен по умолчанию). Проверить статус: sudo systemctl status systemd-journald.

Шаг 1: Базовый просмотр журналов

Самая простая команда выводит все доступные записи журнала в хронологическом порядке (от старых к новым):

journalctl

По умолчанию вывод использует pager (обычно less), что позволяет прокручивать логи. Для вывода всего сразу в терминал (без паузы) добавьте флаг --no-pager:

journalctl --no-pager

Для постраничного просмотра вручную можно использовать конвейер с less:

journalctl | less

В less навигация: стрелки для прокрутки, q для выхода, /текст для поиска.

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

Часто нужно видеть логи за конкретный период. Используйте опции --since и --until. Форматы времени гибкие:

  • Абсолютное время: "2024-01-01 14:30:00"
  • Относительное: "1 hour ago", "yesterday", "today"
  • Комбинирование: --since "2024-01-01" --until "now"

Пример: показать логи за последние 2 часа:

journalctl --since "2 hours ago"

Или за определённый день:

journalctl --since "2024-02-15" --until "2024-02-16"

Шаг 3: Фильтрация по службе (юниту systemd)

Чтобы увидеть логи только конкретного сервиса, используйте флаг -u (или --unit) с именем юнита. Например, для SSH-демона:

journalctl -u sshd.service

Можно фильтровать несколько юнитов одновременно:

journalctl -u nginx.service -u mysql.service

Если не знаете точное имя юнита, найдите его через systemctl list-units --type=service.

Шаг 4: Фильтрация по уровню приоритета (лога)

Журналы systemd имеют уровни серьёзности: emerg (критический), alert, crit, err (ошибки), warning, notice, info, debug. Фильтруйте по приоритету флагом -p (или --priority).

Пример: только ошибки и выше (err, crit, alert, emerg):

journalctl -p err

Или диапазон: от warning до err (включительно):

journalctl -p warning..err

Уровень debug покажет самую подробную отладочную информацию.

Шаг 5: Поиск по ключевым словам

journalctl не имеет встроенного grep, но вы можете передать вывод в grep для поиска текста. Это полезно для отлова конкретных сообщений.

Пример: найти все записи, содержащие слово "failed":

journalctl | grep "failed"

Для регистронезависимого поиска добавьте -i:

journalctl | grep -i "authentication"

Комбинируйте с фильтрами по времени или службе для точности:

journalctl -u nginx.service --since "1 hour ago" | grep "404"

Шаг 6: Ограничение вывода и мониторинг в реальном времени

Чтобы не засорять терминал, ограничьте количество строк флагом -n (или --lines). Покажет последние N записей:

journalctl -n 50  # последние 50 строк

Для отслеживания новых логов в реальном времени (аналог tail -f) используйте -f (или --follow):

journalctl -f

Нажмите Ctrl+C для выхода из режима跟随.

Шаг 7: Форматы вывода и экспорт

По умолчанию journalctl использует формат short (читаемый). Для машинной обработки доступны другие форматы через -o (или --output):

  • json или json-pretty: структурированный JSON.
  • export: бинарный формат для обмена.
  • cat: только сообщения без метаданных.
  • short-iso: с ISO-временными метками.

Пример экспорта в JSON:

journalctl -o json > logs.json

Для просмотра в формате cat (только текст сообщений):

journalctl -o cat | grep "error"

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

Журналы systemd могут занимать много места. Узнайте текущее использование диска:

journalctl --disk-usage

Для очистки старых данных используйте команды вакуума (очистки):

  • Удалить логи старше N дней (например, 7 дней):
    sudo journalctl --vacuum-time=7d
    
  • Ограничить общий размер журнала (например, 100 МБ):
    sudo journalctl --vacuum-size=100M
    
  • Оставить только последние N файлов журнала:
    sudo journalctl --vacuum-files=5
    

⚠️ Важно: Очистка безвозвратно удаляет данные. Убедитесь, что вам не нужны старые логи для аудита или расследования.

Шаг 9: Работа с загрузками (boots)

Journal systemd автоматически разделяет логи по загрузкам системы. Просмотрите список доступных загрузок с временными метками:

journalctl --list-boots

Вывод показывает индекс загрузки (0 — текущая, -1 — предыдущая и т.д.) и временные диапазоны.

Чтобы увидеть логи конкретной загрузки, используйте -b (или --boot) с индексом:

journalctl -b -1  # логи предыдущей загрузки

Шаг 10: Продвинутые комбинации и примеры

Комбинируйте фильтры для точного поиска. Вот полезные примеры:

  • Логи конкретной службы за последний час:
    journalctl -u nginx.service --since "1 hour ago"
    
  • Ошибки ядра (kern) с уровнем err и выше:
    journalctl -p err -k
    
  • Логи текущей загрузки, отсортированные по времени (обратный порядок):
    journalctl -b -r  # -r для reverse (от новых к старым)
    
  • Поиск в логах с подсветкой (используя less и grep):
    journalctl | grep --color -E "error|failed|warning"
    

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

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

  • Вывод содержит ожидаемые записи (например, при фильтрации по службе видите только логи этой службы).
  • При очистке journalctl --disk-usage показывает уменьшение размера.
  • Экспортированные файлы (JSON, TXT) корректно открываются и содержат данные.

Если вывод пуст, проверьте:

  • Правильность фильтров (время, имя юнита).
  • Наличие логов за указанный период (journalctl --list-boots).
  • Права доступа (возможно, требуется sudo).

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

1. Ошибка "Permission denied" или пустой вывод без sudo

Некоторые логи (особенно системные) доступны только root. Решение: используйте sudo перед командой или настройте группы доступа (например, добавьте пользователя в группу systemd-journal).

2. Слишком много данных, команда "висит"

Журнал может быть огромным. Всегда применяйте фильтры (-u, --since, -p) или ограничение (-n). Для быстрого просмотра последних записей: journalctl -n 100 --no-pager.

3. journalctl не находит логи за определённый период

Возможно, система была перезагружена, и логи за тот период хранятся в другой "загрузке". Используйте journalctl --list-boots для поиска нужного индекса и затем journalctl -b <индекс>.

4. Проблемы с очисткой: "No space left on device" после vacuum

Команда --vacuum может не удалить файлы, если они используются. Остановите критические службы перед очисткой или используйте --vacuum-time с осторожностью. В крайнем случае, временно остановите systemd-journald: sudo systemctl stop systemd-journald, удалите файлы в /var/log/journal/, затем запустите службу.

5. Отсутствует команда journalctl

В редких случаях (очень старые дистрибутивы или минимальные установки) systemd может не быть установлен. Проверьте presence: which journalctl. Если нет, установите systemd через менеджер пакетов (например, sudo apt install systemd на Debian/Ubuntu), но будьте осторожны: замена init-системы может нарушить работу.

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

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

Полезное

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