Как использовать Journalctl для чтения системных журналов Linux

На протяжении многих лет системные и ядровые журналы обрабатывались утилитой под названием syslogd. Большинство операционных систем на базе Linux перешли на systemd, который использует другую службу ведения журналов, journald. Для взаимодействия с этими журналами используется утилита journalctl.
Предоставление пользователю прав на чтение системных журналов
Только пользователи, принадлежащие к группам “adm” или “systemd-journal”, могут читать системные журналы systemd. Дистрибутивы, такие как Ubuntu, уже добавляют вас как пользователя в группу adm.
Откройте эмулятор терминала и введите следующую команду:
groups
Если вы видите “adm” или “systemd-journal” в выводе, вы можете пропустить оставшиеся шаги в этом разделе. В противном случае добавьте себя в группу “adm”.
sudo adduser $USER admВам нужно будет перезапустить вашу сессию для того, чтобы это изменение вступило в силу (выйдите и войдите снова). Если вы не можете сделать это по различным причинам, используйте эту команду, чтобы войти в новую группу без перезапуска графической сессии.
newgrp admНе закрывайте окно терминала. Теперь вы часть группы adm – в сеансе терминала, но не в вашей графической сессии. Если вы в этот момент откроете новый терминал, ваш пользователь больше не будет состоять в группе adm.
Проверьте, является ли журнал постоянным
Журналы systemd могут быть постоянными или временными. В Ubuntu и других дистрибутивах они по умолчанию являются постоянными. В Debian 9 они временные, что означает, что они хранятся только в памяти (а не на диске) и исчезают при выключении или перезагрузке. Введите следующую команду.
journalctl --list-boots
Если здесь несколько записей, вам больше ничего не нужно делать. Это означает, что журналы хранятся на диске (постоянные). Если вы видите только одну запись, значит, журнал временный. Измените его на постоянный.
sudosed-i'/Storage/ c\Storage=persistent'/etc/systemd/journald.confВыбор, какую запись журнала загрузки просмотреть
Обычно вы хотите увидеть журнал текущей загрузки. В редких случаях вам может понадобиться увидеть предыдущую загрузку, например, когда что-то пошло не так после сбоя системы.
Чтобы просмотреть журнал текущей загрузки:
journalctl -b0
Для предыдущей загрузки используйте “-1” вместо “0”, а для загрузки поза поза – “-2” и так далее.
journalctl -b-1Навигация и поиск в системном журнале
После того как вы открыли журнал с помощью journalctl, вы можете перемещаться по тексту с помощью клавиш со стрелками и клавиш PAGE UP или PAGE DOWN. Другие полезные клавиши:
для перехода в конец вывода.
- < для перехода в начало вывода.
- / для поиска строк текста. После нажатия клавиши слэш введите строку, которую хотите найти, и нажмите Enter. Поиск учитывает регистр, поэтому “network” не найдет строки “Network”. Поиск начинается с вашей текущей позиции просмотра, сверху вниз. Чтобы искать вверх, используйте ?.
- n для нахождения следующего совпадения в текущем поиске. N для нахождения предыдущего.
- q для выхода из утилиты journalctl.

Фильтрация записей журнала по приоритету
Иногда вы хотите искать только ошибки, игнорируя уведомления и сообщения состояния. Каждая запись в журнале имеет приоритет: чрезвычайная ситуация, предупреждение, критическая ошибка, ошибка, предупреждение, уведомление, информация. Эти приоритеты перечислены по степени важности, начиная с чрезвычайной ситуации (система неработоспособна). Информационные сообщения – это просто информационный текст, сообщающий о состоянии программ, работающих нормально.
Чтобы отобразить только сообщения об ошибках из текущей загрузки, введите:
journalctl -b0-p err
Если вы хотите видеть ошибки из всех загрузок, просто удалите параметр “-b”:
journalctl -p errВот коды, которые вы можете передать параметру “-p”:
- alert
- crit
- debug
- emerg
- err
- info
- notice
- warning
Фильтрация записей журнала по пути к исполняемому файлу процесса или юниту systemd
Некоторые процессы запускаются и управляются так называемыми юнитами systemd. Чтобы увидеть все журналы, связанные с юнитом службы cron, введите:
journalctl -u cron.serviceВы можете посмотреть, какие юниты у вас доступны, с помощью:
systemctl list-dependencies
Вы можете перемещаться по списку с помощью клавиш со стрелками вверх и вниз. Нажмите q, чтобы выйти.
Если вы хотите использовать путь к исполняемому файлу программы (бинарному), просто передайте его полный путь как аргумент.
journalctl /usr/sbin/cronНе забывайте, что вы также можете фильтровать по текущей записи загрузки, чтобы избавиться от ненужных сообщений.
journalctl -b0/usr/sbin/cronЗаключение
Journalctl旨在为了便于查找所需内容。如果您想了解有关可以使用的更多高级参数,请参阅 journalctl 命令手册页。