# journalctl - журнал systemd _Команды · LinuxLab Knowledge Base_ **TL;DR:** `journalctl` читает binary-журнал systemd-journald. Это центральный лог системы: kernel, systemd-сервисы, syslog - всё через один интерфейс. ## Зачем не просто `tail /var/log/syslog` - **Один источник** - kernel, init, сервисы, syslog-API, stdin/stderr запущенных через systemd процессов - **Структурированные поля** - кроме текста есть `_PID`, `_UID`, `_COMM`, `MESSAGE_ID`, любые `KEY=value` от приложения - **Бинарный формат** - компактнее, индексируется - **Boot-aware** - есть концепция «текущей загрузки», легко отфильтровать ## Базовые команды ```bash journalctl # весь журнал (от старого к новому) journalctl -e # сразу в конец (как less -G) journalctl -f # follow (как tail -f) journalctl -n 50 # последние 50 строк journalctl -r # reverse: новые сверху ``` ## Фильтры ```bash journalctl -u nginx # только unit nginx (см. [cmd-systemctl](/kb/cmd-systemctl.md)) journalctl -u nginx -u php-fpm # несколько unit'ов journalctl -p err # priority: emerg/alert/crit/err/warning/notice/info/debug journalctl --since "1 hour ago" journalctl --since "2024-01-01" --until "2024-01-02 12:00" journalctl _PID=1234 # по PID (структурное поле) journalctl _COMM=sshd # по имени процесса journalctl -k # только kernel-сообщения (= dmesg) ``` ## По загрузкам ```bash journalctl --list-boots # список всех загрузок системы journalctl -b # только текущая загрузка journalctl -b -1 # предыдущая (`-1` = на одну назад) ``` Это важно когда система падала и перезапускалась - отделить «было до» и «началось после». ## Форматы вывода ```bash journalctl -u nginx -o json # JSON по строке - для парсинга journalctl -u nginx -o json-pretty journalctl -o cat -u nginx # только MESSAGE, без префиксов journalctl -o verbose # ВСЕ структурированные поля ``` ## Размер журнала ```bash journalctl --disk-usage # сколько занимает на диске sudo journalctl --vacuum-size=500M # обрезать до 500 MB sudo journalctl --vacuum-time=7d # удалить старше 7 дней ``` Конфиг лимитов - `/etc/systemd/journald.conf` (`SystemMaxUse=`, `MaxRetentionSec=`). ## Persistent vs volatile По умолчанию на многих дистро журнал **в RAM** (`/run/log/journal`) - пропадает при ребуте. Чтобы сохранять: ```bash sudo mkdir -p /var/log/journal sudo systemctl restart systemd-journald ``` ## Команды ```bash journalctl -u nginx -f ``` Tail логов nginx в реальном времени ```bash journalctl -p err -b ``` Все ошибки текущей загрузки - первый шаг диагностики ```bash journalctl --since '10 min ago' -u myapp ``` Свежие логи конкретного сервиса ```bash sudo journalctl --vacuum-time=7d ``` Очистить журнал старше недели ```bash journalctl -k --since today ``` Сообщения ядра за сегодня - заменяет dmesg + фильтр ## См. также - [systemd - init и менеджер сервисов](/kb/systemd.md) - [systemctl - управление сервисами systemd](/kb/cmd-systemctl.md) - [dmesg - kernel ring buffer](/kb/cmd-dmesg.md) - [cron и crontab - расписание задач](/kb/cmd-cron-crontab.md) - [Сигналы (SIGTERM, SIGKILL, SIGHUP)](/kb/signals.md) - [Автообновления безопасности (unattended-upgrades, dnf-automatic, livepatch)](/kb/unattended-upgrades.md) - [Loki: label-based логи, LogQL, Promtail/Vector pipeline](/kb/loki-grafana-logging.md)