■ space · прозаическая полоса

■ сначала ответ

journalctl -u <service> -f — одна команда, которая отвечает на вопрос «почему этот сервис лежит» ; добавьте -n 100 для последних 100 строк.

Сначала фильтр, потом скролл: для времени, for time, для ошибок текущей загрузки, for errors this boot, для предыдущей. for the previous boot.

Ограничьте диск один раз: sudo journalctl --vacuum-size=500M, затем SystemMaxUse=500M в /etc/systemd/journald.conf — иначе журнал навсегда останется медленной утечкой диска.

ШЕСТЬ, КАК КАРТОЧКИ

слежениеjournalctl -u <svc> -f

живой tail одной юниты — второй терминал, пока вы перезапускаете сервис в первом

строкиjournalctl -n 100

последние 100 строк; добавьте --no-pager — печать и выход, для пайпов

времяjournalctl --since "1 hour ago"

снисходительные относительные окна бьют точные метки, когда что-то лежит

важностьjournalctl -p err -b

только ошибки, текущая загрузка — самая быстрая проверка «а что-нибудь реально падает?»

загрузкаjournalctl -b -1

предыдущая загрузка — краш, который вы перезагрузили, всё ещё в журнале

дискjournalctl --vacuum-size=500M

оставить только свежайшие 500 МБ — разово; навсегда делается в journald.conf

лестница -p, по убыванию — journalctl -p warning..alert берёт диапазон · -p err — рабочая лошадка

ПОЧЕМУ БЫ ПРОСТО НЕ ЧИТАТЬ /var/log/syslog?

Старый Linux-логинг писал текстовые файлы в /var/log — syslog, auth.log, messages. systemd replaced that with systemd заменил это на the journal: бинарный, индексированный лог под управлением . Plain grep cannot read it; journalctl — единственная парадная дверь, а взамен вы получаете фильтрацию по сервису, времени, загрузке и важности без регэксной гимнастики.

Ментальная модель: журнал хранит всё, а journalctl запрашивает. Сервису не нужен собственный файл лога — всё, что он пишет в stdout/stderr под systemd, автоматически попадает в журнал. volatile (хранится в /run, стирается при перезагрузке), потому что /var/log/journal не существует. Почините один раз:

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

проверка: ls /var/log/journal → каталог есть — загрузки накапливаются, а не стираются

СТРОКИ, СЛЕЖЕНИЕ, ЮНИТЫ

-n ограничивает вывод N свежайшими строками (по умолчанию 10). --no-pager важнее, чем кажется: без него journalctl открывает less, и ваш скрипт, пайп или ssh-однострочник виснет в ожидании клавиши — любой команды, которую вы пайпите дальше, это должно касаться.

journalctl -n 100                      # last 100 lines of everything
journalctl -u nginx -n 100             # last 100 lines from one unit
journalctl -n 100 --no-pager           # print and exit — perfect for piping

— это is journalctl's tail -f от journalctl — стримит новые записи по мере появления. Вот команда для второго терминала, пока вы перезапускаете сервис в первом: systemctl restart nginx в одной панели, journalctl -u nginx -f в другой — и причина краша сама объявится за секунды.

journalctl -f                    # everything, live
journalctl -u sshd -f            # just the SSH daemon, live
journalctl -u ollama -f -n 50    # live, but start with the last 50 lines

фильтрует по systemd-юниту — один, несколько или вариант точного совпадения: filters by systemd unit — one, several, or the exact-match alternative:

journalctl -u nginx                    # one unit, all history
journalctl -u nginx -u redis           # several units at once
journalctl _SYSTEMD_UNIT=nginx.service # exact match

-u <сервис> не показывает ничего, хотя сервис явно работает? Юниты могут плодить юниты-помощники, в которых оседает интересный вывод — падающее веб-приложение иногда логирует в systemctl list-units --type=service | grep -i <guess>. Тот же приём для таймеров (systemctl list-timers показывает имена) и для всего, что работает под systemd --user, добавьте --user: journalctl --user -u pipewire -n 50.

ВРЕМЯ И ВАЖНОСТЬ

--since and --until принимают метки времени, но понимают и снисходительные относительные формулировки. Окно плюс юнит — и сортировка инцидента умещается в одну строку: «что сделал

journalctl --since "1 hour ago"
journalctl --since "2026-09-01 09:00" --until "2026-09-01 12:00"
journalctl --since today
journalctl --since yesterday --until now -u cron

-p фильтрует по приоритету по лестнице syslog, показанной выше. Когда машина «ведёт себя странно», journalctl -p err -b --since today — самая быстрая проверка здравомыслия: отвечает на «а что-нибудь реально падает?» без шума рутинных info-строк.

journalctl -p err -b                    # errors only, since this boot
journalctl -p warning..alert -u nginx   # a range of severities

ЗАГРУЗКИ

Краш, который вы перезагрузили, всё ещё в журнале. Сервисы, падающие на старте, пишут строки лога до вашей текущей загрузки, а journalctl молча показывает только текущую. -b выбирает загрузки — это самый полезный флаг на случай «сломалось, я перезагрузил, и теперь ошибки не видно»:

journalctl -b                 # current boot only
journalctl -b -1              # previous boot
journalctl -b -1 -u sshd      # why SSH died last time
journalctl --list-boots       # index of stored boots

ДИСК

Проверьте, сколько стоит журнал, и поставьте потолок — один vacuum сейчас, одна строка конфига навсегда:

journalctl --disk-usage
sudo journalctl --vacuum-size=500M     # keep newest 500 MB
sudo journalctl --vacuum-time=30d      # keep newest 30 days

Чтобы потолок стал постоянным, задайте SystemMaxUse=500M в секции [Journal][Journal] файла /etc/systemd/journald.conf, затем . Между потолком размера и фильтром загрузок журнал остаётся инструментом, а не медленной утечкой диска.

08КАКОЙ ЛОГ СНАЧАЛА?

Тот же поток распространяется и на локальные AI-сервисы — когда юнит ollama serve буксует, journalctl -u ollama -n 100 сразу показывает провал загрузки модели. Вот и вся шпаргалка: -u для юнита, -f чтобы следить, -n для строк, --since для времени, -p для важности, -b для загрузок. Шесть опций покрывают почти любой лог-вопрос, который задаст вам Linux-машина — а когда вопрос в том, почему systemd-сервис не стартует, эти

■ честный штамп systemd-journald · Ubuntu/Debian · Fedora · Arch — каждая команда выше запускается как есть. Впервые опубликовано 2026-09-02, карточка обновлена 2026-10-04. Ничего не выдумано на этой странице: каждая команда — стандартное использование journalctl, которое можно запустить дословно, а два поведения, которые стоит знать (зависание пейджера, волатильный журнал) — это документированные умолчания journald.

конец шпаргалки · ничего не скачано · всё локально