Просмотр и очистка журналов systemd в Ubuntu

Практическая работа с journalctl в Ubuntu: просмотр системных журналов, фильтрация, поиск ошибок, контроль занимаемого места и безопасная очистка.

Ubuntu использует systemd-journald для сбора сообщений ядра, системных сервисов и приложений. Команда journalctl позволяет просматривать эти журналы, фильтровать события и контролировать занимаемое ими место.

В этой инструкции рассматривается только работа с журналом systemd: просмотр, фильтрация, контроль размера и безопасная очистка.

Проверено на: Ubuntu Server 24.04 LTS
Уровень сложности: начальный
Время выполнения: около 10–15 минут
Требуемый доступ: пользователь с правами sudo

Что будет рассмотрено

В статье показано, как:

  • просматривать системный журнал;
  • фильтровать события по времени, сервису и приоритету;
  • наблюдать новые сообщения в реальном времени;
  • проверять объём журнала;
  • очищать старые архивные записи;
  • ограничивать максимальный размер журнала.

Проверка службы journald

Проверьте состояние службы:

systemctl status systemd-journald --no-pager

Ожидаемый статус:

Active: active (running)

Проверьте последние сообщения службы:

sudo journalctl -u systemd-journald -n 50 --no-pager

Просмотр всего журнала

Открыть журнал:

sudo journalctl

Навигация выполняется клавишами:

↑ и ↓   — перемещение по строкам
PageUp  — страница вверх
PageDown — страница вниз
G       — перейти в конец
g       — перейти в начало
q       — выйти

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

sudo journalctl -n 100 --no-pager

Просмотр журнала текущей загрузки

Показать сообщения после последнего запуска системы:

sudo journalctl -b

Без pager:

sudo journalctl -b --no-pager

Показать сообщения предыдущей загрузки:

sudo journalctl -b -1

Посмотреть список доступных загрузок:

sudo journalctl --list-boots

Фильтрация по времени

Сообщения за последний час:

sudo journalctl --since "1 hour ago"

Сообщения за текущий день:

sudo journalctl --since today

За определённый период:

sudo journalctl   --since "2026-07-26 10:00:00"   --until "2026-07-26 12:00:00"

Используйте собственные дату и время.

Просмотр журнала сервиса

Для конкретного systemd-сервиса используется параметр -u.

Пример для SSH:

sudo journalctl -u ssh

Последние 100 сообщений:

sudo journalctl -u ssh -n 100 --no-pager

Сообщения за последний час:

sudo journalctl -u ssh --since "1 hour ago" --no-pager

Наблюдение в реальном времени:

sudo journalctl -u ssh -f

Вместо ssh укажите нужный unit:

nginx
docker
postgresql
fail2ban

Просмотр сообщений ядра

Показать журнал ядра:

sudo journalctl -k

Только сообщения текущей загрузки:

sudo journalctl -k -b

Последние 100 сообщений:

sudo journalctl -k -n 100 --no-pager

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

Приоритеты systemd journal:

0 — emerg
1 — alert
2 — crit
3 — err
4 — warning
5 — notice
6 — info
7 — debug

Ошибки текущей загрузки:

sudo journalctl -b -p err --no-pager

Предупреждения и более серьёзные сообщения:

sudo journalctl -b -p warning --no-pager

Только критические ошибки:

sudo journalctl -b -p crit --no-pager

Поиск по тексту

Поиск ошибок:

sudo journalctl -b --no-pager |
grep -i error

Поиск нескольких типов событий:

sudo journalctl -b --no-pager |
grep -iE 'error|failed|timeout|denied'

Для SSH:

sudo journalctl -u ssh --no-pager |
grep -iE 'failed|invalid user|accepted'

Наблюдение в реальном времени

Все новые сообщения:

sudo journalctl -f

Сообщения конкретного сервиса:

sudo journalctl -u SERVICE_NAME -f

Остановить просмотр:

Ctrl+C

Форматы вывода

Краткий вывод:

sudo journalctl -n 20 -o short

ISO-время:

sudo journalctl -n 20 -o short-iso

Подробные поля записи:

sudo journalctl -n 1 -o verbose

JSON:

sudo journalctl -n 10 -o json-pretty

Проверка занимаемого места

Покажите общий объём журнала:

sudo journalctl --disk-usage

Пример:

Archived and active journals take up 512.0M in the file system.

Проверьте каталоги хранения:

sudo du -sh   /var/log/journal   /run/log/journal   2>/dev/null

Где хранится журнал

Основные варианты:

/var/log/journal — постоянное хранение на диске
/run/log/journal — временное хранение до перезагрузки

Проверьте текущие каталоги:

sudo ls -ld /var/log/journal /run/log/journal 2>/dev/null

Настройка хранения определяется параметром Storage= в конфигурации journald.

Ротация файлов журнала

Перед очисткой рекомендуется принудительно закрыть текущие файлы и начать новые:

sudo journalctl --rotate

После этого старые файлы становятся архивными и могут быть удалены командами vacuum.

Очистка по времени

Удалить архивные журналы старше 14 дней:

sudo journalctl --vacuum-time=14d

Удалить архивы старше 7 дней:

sudo journalctl --vacuum-time=7d

После очистки проверьте объём:

sudo journalctl --disk-usage

Очистка по размеру

Оставить не более 500 МБ архивных журналов:

sudo journalctl --vacuum-size=500M

Оставить не более 1 ГБ:

sudo journalctl --vacuum-size=1G

Важно: vacuum удаляет старые архивные файлы. Активный журнал может не уменьшиться до указанного значения без предварительной ротации.

Рекомендуемый порядок:

sudo journalctl --rotate
sudo journalctl --vacuum-size=500M

Ограничение количества файлов

Оставить не более 10 архивных файлов:

sudo journalctl --vacuum-files=10

Постоянное ограничение размера журнала

Для постоянной настройки используйте drop-in-файл.

Создайте каталог:

sudo mkdir -p /etc/systemd/journald.conf.d

Создайте конфигурацию:

sudo tee /etc/systemd/journald.conf.d/99-limits.conf >/dev/null <<'EOF'
[Journal]
SystemMaxUse=1G
SystemKeepFree=2G
MaxRetentionSec=14day
EOF

Параметры:

  • SystemMaxUse=1G — максимальный объём постоянного журнала;
  • SystemKeepFree=2G — сколько места journald должен оставить свободным;
  • MaxRetentionSec=14day — максимальный срок хранения записей.

Проверка конфигурации

Посмотрите итоговые параметры:

systemd-analyze cat-config systemd/journald.conf

Найдите добавленные значения:

systemd-analyze cat-config systemd/journald.conf |
grep -E 'SystemMaxUse|SystemKeepFree|MaxRetentionSec'

Применение настроек

Перезапустите journald:

sudo systemctl restart systemd-journald

Проверьте состояние:

systemctl status systemd-journald --no-pager

Проверьте журнал службы:

sudo journalctl -u systemd-journald -n 50 --no-pager

Включение постоянного хранения

Если требуется хранить журнал после перезагрузки, создайте каталог:

sudo mkdir -p /var/log/journal

Установите корректные права средствами systemd:

sudo systemd-tmpfiles --create --prefix /var/log/journal

Перезапустите journald:

sudo systemctl restart systemd-journald

Проверьте:

sudo journalctl --flush
sudo ls -la /var/log/journal

Проверка журнала после перезагрузки

Перезагрузите сервер:

sudo reboot

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

sudo journalctl --list-boots

Если отображается предыдущая загрузка с индексом -1, постоянное хранение работает.

Удаление пользовательской конфигурации

Удалите drop-in-файл:

sudo rm -f /etc/systemd/journald.conf.d/99-limits.conf

Перезапустите службу:

sudo systemctl restart systemd-journald

После этого будут использоваться стандартные настройки.

Типичные проблемы

journalctl показывает только текущую загрузку

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

sudo ls -ld /var/log/journal

Если его нет, журнал может храниться только в /run и исчезать после перезагрузки.

Журнал занимает слишком много места

Проверьте:

sudo journalctl --disk-usage

Выполните ротацию и очистку:

sudo journalctl --rotate
sudo journalctl --vacuum-size=500M

Затем настройте постоянный лимит.

Vacuum почти не уменьшил размер

Сначала выполните:

sudo journalctl --rotate

После этого повторите vacuum.

Нет доступа к системным сообщениям

Используйте sudo:

sudo journalctl

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

Слишком много сообщений одного сервиса

Проверьте unit:

sudo journalctl -u SERVICE_NAME --since today

Причину частого логирования следует исправлять в самом сервисе, а не только очищать журнал.

Быстрый набор команд

Последние ошибки текущей загрузки:

sudo journalctl -b -p err --no-pager

Последние записи сервиса:

sudo journalctl -u SERVICE_NAME -n 100 --no-pager

Наблюдение за сервисом:

sudo journalctl -u SERVICE_NAME -f

Размер журнала:

sudo journalctl --disk-usage

Очистка архивов старше 14 дней:

sudo journalctl --rotate
sudo journalctl --vacuum-time=14d

Итог

После выполнения инструкции можно:

  • просматривать системные журналы;
  • фильтровать сообщения по загрузке, времени, сервису и приоритету;
  • наблюдать события в реальном времени;
  • проверять занимаемое место;
  • безопасно удалять старые архивы;
  • ограничивать объём и срок хранения журнала;
  • включать постоянное хранение между перезагрузками.

Очистка журналов не должна заменять устранение причины ошибок или чрезмерного логирования.

← Предыдущая статья Автоматические обновления безопасности в Ubuntu Следующая статья → Ограничение размера логов Docker