Просмотр и анализ журналов Systemd с помощью Journalctl [Полное руководство]
В этом руководстве объясняются основы утилиты Journalctl Systemd и ее различных команд. Вы можете использовать эти команды для устранения неполадок журналов рабочего стола и сервера в Linux. Вот как вы можете использовать журналctl для просмотра и анализа журналов Systemd на различных примерах.
Введение
Многие говорят, что Systemd плох, он тяжел для системы и всегда является обсуждаемой темой. Но нельзя отрицать, что он предоставляет хороший набор утилит для управления системой, устранения неполадок. Представьте, что у вас сломанная система без графического интерфейса. Вероятно, вы также испортили загрузку и GRUB. В таких сценариях или в целом вы можете загрузиться из LIVE-системы, смонтировать раздел Linux и изучить журналы Systemd, чтобы узнать о проблеме.
Systemd имеет три основных компонента:
- systemd: менеджер систем и служб для операционных систем Linux.
- systemctl: команда для анализа и контроля состояния системы systemd и менеджера служб.
- systemd-analyze: предоставляет статистику производительности загрузки системы и получает другую информацию о состоянии и трассировке от менеджера системы и служб.
Помимо этих трех, существуют дополнительные сервисы, которые предоставляет systemd, такие как — Journald, Logind, Networkd и т. д. В этом руководстве мы поговорим о сервисе Journald systemd.
journald - демон журнала systemd
По замыслу systemd обеспечивает централизованный способ обработки всех журналов операционной системы из процессов, приложений и т. д. Все эти события журналирования обрабатываются демоном Journald из systemd. Демон Journald собирает все журналы всех операционных систем Linux и сохраняет темы в виде двоичных данных в файлах.
Преимущества централизованной регистрации событий и системных проблем в виде двоичных данных многочисленны. Например, поскольку системные журналы хранятся в двоичном, а не текстовом виде, вы можете переводить их разными способами, например в текст, объекты JSON для различных нужд. Кроме того, очень легко отследить одно событие, поскольку журналы сохраняются последовательно с помощью манипуляций с датой и временем в журналах.
Помните, что файлы журналов, которые собирает Journald, состоят из тысяч строк и обновляются для каждого события и каждой загрузки. Поэтому, если вы уже давно используете операционную систему Linux, размер журналов журнала должен быть в ГБ. Поскольку журналы исчисляются тысячами, лучше фильтровать их с помощью основных команд, чтобы узнать больше о системных проблемах.
Файл конфигурации Journald
Файл конфигурации Journald находится по следующему пути. Он содержит различные флаги о том, как происходит ведение журнала. Вы можете просмотреть файл и внести необходимые изменения. Но я бы рекомендовал не изменять этот файл, если вы не знаете, что делаете.
/etc/systemd/journald.confГде Journald хранит файлы двоичного журнала
Journald хранит журналы в двоичном формате. Они хранятся в каталоге по этому пути.
/var/log/journalНапример, по указанному ниже пути есть каталог, содержащий все системные журналы на сегодняшний день.
путь к файлу журнала Journalctl
Не используйте команду cat и не используйте nano или vi, чтобы открыть эти файлы. Они не будут отображаться должным образом.
Используйте журналctl для просмотра и анализа журналов Systemd
Основная команда журнала
Основная команда для просмотра журналов с помощью демона журнала:
journalctl
журналctl
Это дает вам все записи журнала, включая ошибки, предупреждения и т. д., из всех приложений и процессов. Он показывает список, в котором самый старый журнал находится вверху, а текущие журналы внизу. Вам нужно продолжать нажимать ENTER, чтобы прокручивать его построчно. Вы также можете использовать клавиши PAGE UP и PAGE DOWN для прокрутки. Нажмите q, чтобы выйти из этого режима просмотра.
Как просмотреть записи журнала для часовых поясов
По умолчанию журналctl показывает время журнала в текущем часовом поясе системы. Однако вы можете легко указать часовой пояс в своей команде, чтобы преобразовать тот же журнал в другой часовой пояс. Например, чтобы просмотреть журналы в формате UTC, используйте команду ниже.
journalctl --utcжурналctl -utc
Как просмотреть в журналах журнала только ошибки, предупреждения и т. д.
Журналы, генерируемые системой, имеют разные приоритеты. Некоторые журналы могут содержать предупреждения, которые можно игнорировать, а некоторые могут содержать критические ошибки. Возможно, вы захотите просмотреть только ошибки, а не предупреждения. Это также возможно с помощью команды ниже.
Для просмотра экстренных системных сообщений используйте:
journalctl -p 0журналctl -p 0
Коды ошибок
0: emergency
1: alerts
2: critical
3: errors
4: warning
5: notice
6: info
7: debug
Когда вы указываете код ошибки, отображаются все сообщения из этого кода и выше. Например, если вы укажете приведенную ниже команду, она отобразит все сообщения с приоритетом 2, 1 и 0.
journalctl -p 2Как просмотреть журналы журнала для конкретной загрузки
Когда вы запускаете команду Journalctl, она показывает информацию из текущей загрузки, то есть из текущего сеанса, который вы запускаете. Но также можно просмотреть информацию о прошлых загрузках.
Журналы журнала продолжают обновляться при каждой перезагрузке. Journald отслеживает журналы в разных загрузках. Для просмотра журналов загрузки используйте команду ниже.
journalctl --list-bootsсписок-ботинок журналаctl
- Первое число показывает уникальный номер дорожки загрузки Journald, который вы можете использовать в следующей команде для анализа этой конкретной загрузки.
- Второе число — идентификатор загрузки, который также можно указать в командах.
- Следующие две комбинации даты и времени представляют собой продолжительность журналов, хранящихся в соответствующем файле. Это очень удобно, если вы хотите узнать журнал или ошибку за определенную дату и время.
Чтобы просмотреть конкретный номер загрузки, введите первый номер или идентификатор загрузки, как показано ниже.
journalctl -b -45journalctl -b 8bab42c7e82440f886a3f041a7c95b98журналctl -b 45
Вы также можете использовать переключатель -x, который может добавить объяснение сообщений об ошибках systemd на ваш дисплей. Это спасатель в определенных ситуациях.
journalctl -xb -p 3журналctl -xb
Как просмотреть журналы журнала за определенное время и продолжительность даты
Journalctl достаточно мощный, чтобы предоставить «английский» аргумент в самой команде для манипулирования временем и датой.
Вы можете использовать переключатель --since с комбинацией «вчера», «сегодня», «завтра» или «сейчас».
Некоторые примеры различных команд ниже. Вы можете изменить их в соответствии с вашими потребностями. Они говорят сами за себя. Формат даты и времени в приведенных ниже командах: "ГГГГ-ММ-ДД ЧЧ:ММ:СС"
journalctl --since "2020-12-04 06:00:00"journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"journalctl --since yesterdayjournalctl --since 09:00 --until "1 hour ago"журналctl -с 09:00 -до
Вы также можете комбинировать вышеперечисленное с переключателями уровня ошибки.
Как просмотреть журналы журнала ядра
Сообщения ядра Linux также можно извлечь из журналов журналов. Чтобы просмотреть сообщения ядра из текущей загрузки, используйте только команду ниже.
journalctl -kКак просмотреть журналы журнала службы, PID
Вы можете отфильтровать определенные журналы из сервисного модуля systemd только из журналов Journald. Например, чтобы узнать журналы службы NetworkManager, используйте команду ниже.
journalctl -u NetworkManager.serviceслужба Journalctl NetworkManager
Если вы не знаете имя службы, вы можете использовать команду ниже, чтобы просмотреть список служб systemd в вашей системе.
systemctl list-units --type=serviceКак просмотреть журналы журнала пользователя, группы
Если вы анализируете журналы сервера, эта команда полезна, когда в систему вошли несколько пользователей. Сначала вы можете узнать идентификатор пользователя, используя приведенную ниже команду по имени пользователя. Например, чтобы узнать идентификатор пользователя «debugpoint» —
id -u debugpointЗатем используйте этот идентификатор с переключателем _UID для просмотра журналов, созданных пользователем.
journalctl _UID=1000 --since todayжурналctl _UID
Аналогично используйте переключатель _GID, чтобы узнать то же самое для групп пользователей.
Как просмотреть журналы журнала исполняемого файла
Вы также можете узнать журналы журналов конкретной программы или исполняемого файла. Например, если вы хотите узнать сообщения оболочки gnome, вы можете запустить следующую команду.
journalctl /usr/bin/gnome-shell --since todayжурналctl gnome-shell
Заключительные замечания
Я надеюсь, что это руководство поможет вам использовать журналctl для просмотра журналов анализа systemd на рабочем столе Linux или устранения неполадок сервера. Управление журналами systemd чрезвычайно мощное, если вы знаете, как использовать команды, оно немного облегчает вашу жизнь во время отладки. В настоящее время все основные дистрибутивы Linux используют Systemd. Ubuntu, Debian, Fedora, Arch — все они используют systemd в качестве ОС по умолчанию. Если вас интересуют дистрибутивы Linux без systemd, вы можете проверить MX-Linux, Gentoo, Slackware, Void Linux.










