Linux-команда journalctl

Linux 命令大全Справочник команд Linux


Что такое journalctl?

journalctl — это мощный инструмент в Linux для запроса и отображения журналов systemd. Являясь частью экосистемы systemd, он обеспечивает централизованное управление журналами, заменяя традиционную службу syslog.

Основные возможности

  1. Двоичное хранение логов: Логи хранятся в двоичном формате для повышения эффективности поиска.
  2. Структурированные логи: Поддерживается прикрепление метаданных и структурированных полей логов.
  3. Мониторинг в реальном времени: Позволяет отслеживать изменения логов в реальном времени.
  4. Несколько методов фильтрации: Поддерживает фильтрацию по времени, службе, приоритету и многим другим условиям.

Базовый синтаксис

Базовый формат команды 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

Продвинутое использование

1. Показать место на диске, используемое логами

Пример

journalctl --disk-usage

2. Очистка старых логов

Пример

# Хранить логи за последние 2 дня
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

Практические советы

1. Комбинированные запросы

Пример

# Запросить логи ошибок для службы nginx со вчерашнего дня
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

Проблема 2: Как просмотреть старые журналы после ротации?

Решение:

Пример

# Просмотреть все журналы (включая архивированные)
journalctl -a

Проблема 3: Как просмотреть журналы на конкретный момент времени?

Решение:

Пример

# Запрос по времени с точностью до секунды
journalctl --since "2023-01-01 12:00:00" --until "2023-01-01 12:05:00"

Сводная блок-схема

Linux 命令大全Справочник команд Linux

Другие расширения