Linux-команда journalctl
Что такое journalctl?
journalctl — это мощный инструмент в Linux для запроса и отображения журналов systemd. Являясь частью экосистемы systemd, он обеспечивает централизованное управление журналами, заменяя традиционную службу syslog.
Основные возможности
- Двоичное хранение логов: Логи хранятся в двоичном формате для повышения эффективности поиска.
- Структурированные логи: Поддерживается прикрепление метаданных и структурированных полей логов.
- Мониторинг в реальном времени: Позволяет отслеживать изменения логов в реальном времени.
- Несколько методов фильтрации: Поддерживает фильтрацию по времени, службе, приоритету и многим другим условиям.
Базовый синтаксис
Базовый формат команды journalctl выглядит следующим образом:
journalctl [选项] [匹配条件...]
Обзор общих параметров
| Опция | Описание |
|---|---|
-b |
Показать логи с текущей загрузки |
-f |
Отслеживать логи (аналогично tail -f) |
-k |
Показывать только сообщения ядра |
-u |
Показать логи для указанного юнита |
-n |
Показать последние n записей лога |
--since |
Показать логи после указанного времени |
--until |
Показать журналы до указанного времени |
Общие примеры использования
1. Просмотр полных системных журналов
Пример
journalctl
2. Просмотр журналов текущей загрузки
Пример
journalctl -b
3. Мониторинг новых журналов в реальном времени
Пример
journalctl -f
4. Просмотр журналов для конкретной службы
Пример
journalctl -u nginx.service
5. Запрос по диапазону времени
Пример
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"
6. Просмотр журналов уровня ошибок
Пример
journalctl -p err
Фильтрация журналов по приоритету
journalctl поддерживает фильтрацию по приоритету журнала. Приоритеты определяются следующим образом:
| Приоритет | Значение | Описание |
|---|---|---|
| emerg | 0 | Аварийный |
| alert | 1 | Требует немедленной обработки |
| crit | 2 | Критично |
| err | 3 | Ошибка |
| warning | 4 | Предупреждение |
| notice | 5 | Уведомление |
| информация | 6 | Информационный |
| debug | 7 | Debug |
Примеры использования:
Пример
# Показать логи уровня ошибок и выше
journalctl -p err
# Показать логи уровня предупреждений и выше
journalctl -p warning
journalctl -p err
# Показать логи уровня предупреждений и выше
journalctl -p warning
Продвинутое использование
1. Показать место на диске, используемое логами
Пример
journalctl --disk-usage
2. Очистка старых логов
Пример
# Хранить логи за последние 2 дня
journalctl --vacuum-time=2d
# Ограничить максимальное использование логов до 500MB
journalctl --vacuum-size=500M
journalctl --vacuum-time=2d
# Ограничить максимальное использование логов до 500MB
journalctl --vacuum-size=500M
3. Вывод в формате JSON
Пример
journalctl -o json
4. Показать полную информацию о полях
Пример
journalctl -o verbose
5. Фильтрация по конкретному полю
Пример
# Показать логи для конкретного ID процесса
journalctl _PID=1234
# Показать логи для конкретного пользователя
journalctl _UID=1000
journalctl _PID=1234
# Показать логи для конкретного пользователя
journalctl _UID=1000
Практические советы
1. Комбинированные запросы
Пример
# Запросить логи ошибок для службы nginx со вчерашнего дня
journalctl -u nginx.service --since yesterday -p err
journalctl -u nginx.service --since yesterday -p err
2. Просмотр с постраничной навигацией
Пример
journalctl | less
3. Экспорт логов в файл
Пример
journalctl --since "2023-01-01" > journal.log
4. Просмотр сообщений кольцевого буфера ядра
Пример
journalctl -k
5. Просмотр журналов процесса загрузки системы
Пример
journalctl -b0 | grep "Starting"
Решения типичных проблем
Проблема 1: Неполное отображение журнала
Решение:
Пример
# Увеличить лимит строк вывода
journalctl --no-pager
journalctl --no-pager
Проблема 2: Как просмотреть старые журналы после ротации?
Решение:
Пример
# Просмотреть все журналы (включая архивированные)
journalctl -a
journalctl -a
Проблема 3: Как просмотреть журналы на конкретный момент времени?
Решение:
Пример
# Запрос по времени с точностью до секунды
journalctl --since "2023-01-01 12:00:00" --until "2023-01-01 12:05:00"
journalctl --since "2023-01-01 12:00:00" --until "2023-01-01 12:05:00"
Сводная блок-схема

Справочник команд Linux