CLI AI

Логи сервиса через journalctl за последний час

2026-06-20

Команда — journalctl -u nginx --since '1 hour ago': -u выбирает юнит, --since задаёт окно. Четыре флага — -u, --since, -p и -f — закрывают большую часть разбора инцидента, и порядок ниже — тот, в котором их реально применяют: от полного списка сообщений сервиса до слежения за ошибками в реальном времени и выгрузки лога коллеге.

1. Как посмотреть логи одного сервиса?

clai
$ clai покажи логи nginx→ journalctl -u nginx

-u это unit. Без него вы получите весь системный журнал, где сообщения вашего сервиса тонут среди сообщений ядра и всего остального.

2. Как сузить окно до последнего часа?

clai
$ clai покажи логи nginx за последний час→ journalctl -u nginx --since '1 hour ago'

--since понимает человеческие формулировки: today, yesterday, '1 hour ago', '2026-06-20 14:00'. Есть парный --until, чтобы отрезать хвост после инцидента.

3. Как оставить только ошибки?

clai
$ clai покажи только ошибки nginx за сегодня→ journalctl -u nginx --since today -p err

-p это приоритет syslog. err показывает уровень error и всё, что серьёзнее — critical, alert, emergency. Уровни: emerg, alert, crit, err, warning, notice, info, debug.

4. Как следить за логами в реальном времени?

clai
$ clai следи за логами nginx прямо сейчас→ journalctl -u nginx -f

Аналог tail -f, но journald знает про ротацию, так что замолчать эта команда не может. Это и есть главное преимущество перед чтением файла напрямую.

5. Как посмотреть, что было с прошлой загрузки?

clai
$ clai покажи ошибки этого сервиса с предыдущей загрузки системы→ journalctl -u nginx -b -1 -p err

-b это boot. -b -1 предыдущая загрузка, -b 0 или просто -b текущая. Незаменимо, когда машина ушла в перезагрузку и надо понять почему.

6. Как отдать лог коллеге?

clai
$ clai выгрузи логи nginx за сегодня в файл без пагинации→ journalctl -u nginx --since today --no-pager -o short-iso > nginx-today.log

--no-pager убирает less, иначе в неинтерактивной среде команда зависнет. -o short-iso даёт метки времени в ISO-8601, которые нормально сортируются и не зависят от локали.

Грабли

  • -u принимает имя юнита, а не имя процесса. journalctl -u nginx работает, journalctl -u /usr/sbin/nginx — нет. Список юнитов даёт systemctl list-units --type=service.
  • Журнал может не пережить перезагрузку. Если в /etc/systemd/journald.conf стоит Storage=volatile, история теряется при рестарте. Проверьте, существует ли каталог /var/log/journal.
  • Пользовательские и системные юниты разделены. Для сервисов, запущенных под вашим пользователем, нужен journalctl --user -u имя, иначе вы ничего не найдёте.

Похожие вопросы

Как посмотреть последние N строк? journalctl -u nginx -n 50. По умолчанию journalctl показывает всё с начала, что на большом журнале неудобно.

Чем journalctl лучше чтения файла в /var/log? Он знает о ротации, умеет фильтровать по юниту, приоритету и времени и показывает логи сервисов, которые вообще не пишут в файлы.

Как ограничить размер журнала? SystemMaxUse=500M в /etc/systemd/journald.conf, затем systemctl restart systemd-journald. Разовая чистка: journalctl --vacuum-size=200M.

Читайте также

Не запоминайте флаги journalctl — опишите инцидент, и CliAI напишет команду. Установка одной строкой.