Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
system:journalctl [2023/12/15 00:12] – создано mirocow | system:journalctl [2023/12/15 00:24] (текущий) – mirocow | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | {{tag> | ||
+ | |||
====== Journalctl ====== | ====== Journalctl ====== | ||
+ | ===== Централизованное ведение журнала ===== | ||
+ | |||
+ | Система systemd и менеджер служб внесли значительные изменения в способ сбора системных журналов. Журналы раньше располагались в разных местах файловой системы в соответствии с сервисом или демоном, | ||
+ | |||
+ | С помощью systemd все файлы журналов системны, | ||
+ | |||
+ | Это также может упростить перекрёстную ссылку на связанную информацию, | ||
+ | |||
+ | * journalctl — это инструмент, | ||
+ | |||
+ | ===== journalctl без излишеств ===== | ||
+ | |||
+ | Вы можете вызвать journalctl без параметров командной строки: | ||
+ | |||
+ | journalctl | ||
+ | Команда journalctl отобразит весь журнал, | ||
+ | |||
+ | |||
+ | |||
+ | Нажатие клавишу End для перехода к нижней части списка, | ||
+ | |||
+ | |||
+ | |||
+ | Для выхода нажмите клавишу q или Ctrl+c. | ||
+ | |||
+ | journalctl можно запустить без использования sudo, но если использовать sudo, то вы гарантированно увидите все подробности в журнале. | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Если вы хотите, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Будет выведено много информации, | ||
+ | |||
+ | |||
+ | |||
+ | Чтобы ограничить количество строк, которые возвращает journalctl, используйте опцию -n ЧИСЛО. Допустим, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | ===== Постоянное обновление выводимой информации ===== | ||
+ | |||
+ | Вы можете сделать так, что journalctl будет постоянно выводить новые записи журнала в реальном времени по мере их появления. Для этого используйте опцию -f. | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Обновление происходит практически в реальном времени, | ||
+ | |||
+ | ===== Изменение формата отображения ===== | ||
+ | |||
+ | Поскольку журнал представляет собой двоичный файл, данные в нем должны быть переведены или разобраны в текст, прежде чем он может быть отображён для вас. При использовании разных парсеров разные форматы вывода могут быть созданы из одних и тех же двоичных исходных данных. Journalctl может использовать несколько разных форматов. | ||
+ | |||
+ | По умолчанию выводится короткий формат, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | Поля слево-направо: | ||
+ | |||
+ | Время создания сообщения по местному времени. | ||
+ | Имя хоста. | ||
+ | Название процесса. Это процесс, | ||
+ | Сообщение для записи. | ||
+ | Чтобы получить полную дату и время, используйте модификатор short-full: | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | Обратите на формат даты и времени в этих выходных данных — чуть позже мы будем использовать эти форматы при выводе сообщений журнала по периодам. | ||
+ | |||
+ | Чтобы увидеть все метаданные, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | В выводимой информации много различных полей, но обычно в одном сообщении они представлены не все. | ||
+ | |||
+ | Одно из полей, которое следует обсудить особо, это поле Priority. Значение поля указывает на важность сообщения. Могут быть следующие варианты: | ||
+ | |||
+ | * 0: Emergency (чрезвычайная ситуация). Систему невозможно использовать. | ||
+ | * 1: Alert (тревога). Было помечено условие, | ||
+ | * 2: Critical (критическая ситуация). Это охватывает сбои и существенные нарушения работы в главных приложениях. | ||
+ | * 3: Error (ошибка). Было сообщено об ошибке, | ||
+ | * 4: Warning (предупреждение). Обращает ваше внимание на условие, | ||
+ | * 5: Notice (уведомление). Используется для сообщения о необычных событиях, | ||
+ | * 6: Information (информация). Регулярные оперативные сообщения. Это не требует действий. | ||
+ | * 7: Debug (отладочная информация). Сообщения помещаются в приложения, | ||
+ | |||
+ | Если вы хотите, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Каждое сообщение должным образом упаковывается как правильно сформированный объект JSON и отображает одно сообщение на строку вывода. | ||
+ | |||
+ | |||
+ | |||
+ | Чтобы вывод JSON был напечатан в удобном для восприятия человеком виде, используйте модификатор json-pretty. | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Каждый объект JSON разбит на несколько строк, каждая пара имя-значение находится на новой строке. | ||
+ | |||
+ | |||
+ | |||
+ | Чтобы видеть только сообщения записей журнала без меток времени или других метаданных, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Этот формат отображения может затруднить определение того, какой процесс вызвал событие журнала, | ||
+ | |||
+ | |||
+ | |||
+ | ===== Выбор сообщений журнала по периоду времени ===== | ||
+ | |||
+ | Чтобы ограничить вывод из journalctl интересующим вас периодом времени, | ||
+ | |||
+ | Чтобы просмотреть записи журнала с определённого времени и даты, используйте эту команду: | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Вывод содержит только те сообщения, | ||
+ | |||
+ | |||
+ | |||
+ | Чтобы установить период времени, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Это отличная комбинация, | ||
+ | |||
+ | ===== Использование относительных периодов времени ===== | ||
+ | |||
+ | Вы можете использовать относительную адресацию при выборе периода времени. Это означает, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Будут выведены сообщения журнала с 00:00:00 вчера до «сейчас». | ||
+ | |||
+ | Если вы хотите исследовать что-то, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Отобразятся сообщения за последний час. Вы также можете использовать «m» для установки относительных периодов времени, | ||
+ | |||
+ | |||
+ | journalctl понимает today (сегодня), | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Все события журнала журнала, | ||
+ | |||
+ | Чтобы увидеть все сообщения журнала, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Отобразится всё с 00:00:00 до момента ввода команды. | ||
+ | |||
+ | Вы можете смешивать различные модификаторы периода времени. Чтобы увидеть все от двух дней назад до сегодняшнего дня, используйте эту команду: | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Эта команда покажет все сообщения системного журнала с позавчера до сегодняшнего дня (не включая сегодня). | ||
+ | |||
+ | ===== Выбор сообщений журнала по полям данных ===== | ||
+ | |||
+ | Вы можете искать сообщения журнала, | ||
+ | |||
+ | |||
+ | <code bash>man systemd.journal-fields</ | ||
+ | Имейте в виду, заполняет ли приложение каждое поле или нет, полностью зависит от авторов приложения. Вы не можете быть уверенным, | ||
+ | |||
+ | Все модификаторы полей журнала используются одинаково. Мы будем использовать несколько в наших примерах ниже. Чтобы найти сообщения журнала из определённого приложения, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Вы можете искать записи журнала, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Обратите внимание, | ||
+ | |||
+ | Вы также можете искать по идентификатору пользователя. Это идентификатор пользователя, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | В результате будут выведены все сообщения журнала, | ||
+ | |||
+ | |||
+ | |||
+ | Другой способ поиска сообщений журнала, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Будут выведены все сообщения службы crond, которая отвечает за запуск программ в определённые интервалы времени. | ||
+ | |||
+ | Чтобы упростить поиск, мы можем попросить journalctl перечислить все значения, | ||
+ | |||
+ | Чтобы увидеть идентификаторы пользователей, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | Давайте сделаем это снова и посмотрим на идентификаторы групп (_GID): | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | Вы можете сделать это с любым из идентификаторов полей журнала. | ||
+ | |||
+ | |||
+ | <code bash>man systemd.journal-fields</ | ||
+ | ===== Вывод сообщений ядра ===== | ||
+ | |||
+ | Существует встроенный способ быстрой изоляции сообщений ядра. Вам не нужно искать и изолировать их самостоятельно. Опция -k удаляет все остальные сообщения и даёт вам мгновенный просмотр записей журнала ядра. | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Подсветка отражает важность сообщения в соответствии со значениями в поле «Priority». | ||
+ | |||
+ | |||
+ | |||
+ | ===== Просмотр загрузочных сообщений ===== | ||
+ | |||
+ | Если у вас возникла проблема, | ||
+ | |||
+ | Чтобы просмотреть записи журнала, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Показаны записи из логов последней загрузки: | ||
+ | |||
+ | |||
+ | |||
+ | Когда мы говорим «последняя загрузка», | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Как правило, | ||
+ | |||
+ | Легко запутаться в последовательности загрузок. Чтобы помочь, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | Вы можете указать загрузку, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Будут извлечены и показаны только сообщения для этой загрузки. | ||
+ | |||
+ | ===== Поиск проблем служб (journalctl -xe) ===== | ||
+ | |||
+ | В случае, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | или команду: | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Первая команда показывает статус указанной службы и, среди прочего, | ||
+ | |||
+ | Что касается команды journalctl с опциями -xe, то рассмотрим эти опции более подробно — фактически, | ||
+ | |||
+ | * Элемент ненумерованного списка-x, | ||
+ | * -e, --pager-end говорит немедленно перейте к концу журнала внутри подразумеваемого инструмента пейджера. Это подразумевает -n1000, чтобы гарантировать, | ||
+ | |||
+ | То есть команда с этими опциями необязательно покажет то, что вы ожидаете, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Вы также можете использовать любые другие уже рассмотренные опции, например, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | ===== Очистка места на диске: управление пространством на жёстком диске для системного журнала ===== | ||
+ | |||
+ | Конечно, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | С сегодняшними жёсткими дисками 2.3 ГБ это не так уж много места, но в демонстрационных целях мы все равно очистим место на диске. Есть два способа сделать это. Первый — установить ограничение размера, | ||
+ | |||
+ | Мы будем использовать замечательную опцию --vacuum-size и передадим размер, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | Другой способ сократить размер журнала — использовать опцию --vacuum-time. Эта опция сообщает journalctl об отмене сообщений, | ||
+ | |||
+ | Давайте отсеем все сообщения старше одной недели: | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | |||
+ | ===== Данные против информации ===== | ||
+ | |||
+ | Данные бесполезны до тех пор, пока вы не можете получить и использовать их. В случае использования, | ||
+ | |||
+ | Вы можете использовать практически любой фрагмент информации, |