Это старая версия документа!
# Шпаргалка по journalctl в Linux
В Linux работающем под управлением системы инициализации systemd для просмотра логов определенного сервиса или загрузки системы необходимо использовать утилиту journalctl ## Синтаксис и опции journalctl
Синтаксис:
``` journalctl опции ``` основные опции:
* --full, -l - отображать все доступные поля; * --all, -a - отображать все поля в выводе full, даже если они содержат непечатаемые символы или слишком длинные; * --pager-end, -e - отобразить только последние сообщения из журнала; * --lines, -n - количество строк, которые нужно отображать на одном экране, по умолчанию 10; * --no-tail - отображать все строки доступные строки; * --reverse, -r - отображать новые события в начале списка; * --output, -o - настраивает формат вывода лога; * --output-fields - поля, которые нужно выводить; * --catalog, -x - добавить к информации об ошибках пояснения, ссылки на документацию или форумы там, где это возможно; * --quiet, -q - не показывать все информационные сообщения; * --merge, -m - показывать сообщения из всех доступных журналов; * --boot, -b - показать сообщения с момента определенной загрузки системы. По умолчанию используется последняя загрузка; * --list-boots - показать список сохраненных загрузок системы; * --dmesg, -k - показывает сообщения только от ядра. Аналог вызова команды dmesg; * --identifier, -t - показать сообщения с выбранным идентификатором; * --unit, -u - показать сообщения от выбранного сервиса; * --user-unit - фильтровать сообщения от выбранной сессии; * --priority, -p - фильтровать сообщения по их приоритету. Есть восемь уровней приоритета, от 0 до 7; * --grep, -g - фильтрация по тексту сообщения; * --cursor, -c - начать просмотр сообщений с указанного места; * --since, -S, --until, -U - фильтрация по дате и времени; * --field, -F - вывести все данные из выбранного поля; * --fields, -N - вывести все доступные поля; * --system - выводить только системные сообщения; * --user - выводить только сообщения пользователя; * --machine, -M - выводить сообщения от определенного контейнера; * --header - выводить заголовки полей при выводе журнала; * --disk-usage - вывести общий размер лог файлов на диске; * --list-catalog - вывести все доступные подсказки для ошибок; * --sync - синхронизировать все не сохраненные журналы с файловой системой; * --flush - перенести все данные из каталога /run/log/journal в /var/log/journal; * --rotate - запустить ротацию логов; * --no-pager - выводить информацию из журнала без возможности листать страницы; * -f - выводить новые сообщения в реальном времени, как в команде tail; * --vacuum-time - очистить логи, давностью больше указанного периода; * --vacuum-size - очистить логи, чтобы размер хранилища соответствовал указанному.
(!) Если утилита не выводит ничего, выполните её от имени суперпользователя : ## Горячие клавиши journalctl
По умолчанию информация лога выводится в формате, в котором её можно листать. Для этого можно использовать следующие горячие клавиши:
- Стрелка вниз, Enter, e или j - переместиться вниз на одну строку;
- Стрелка вверх, y или k - переместиться на одну строку вверх;
- Пробел - переместиться на одну страницу вниз;
- b - переместиться на одну страницу вверх;
- Стрелка вправо, стрелка влево - горизонтальна прокрутка;
- g - перейти на первую строку;
- G - перейти на последнюю строку;
- p - перейти на позицию нужного процента сообщений. Например, 50p перенесет курсор на середину вывода;
- / - поиск по журналу;
- n - найти следующее вхождение;
- N - предыдущее вхождение;
- q - выйти.
## Шпаргалка по journalctl
Вывод journalctl представляет из себя цельный список всех сохраненных сообщений. Если вы запустите команду journalctl без параметров, то получите самые первые сообщения, которые были сохранены. ``` sudo journalctl ```
Формат вывода лога такой: ``` янв 13 20:55:55 sergiy-pc kernel: Linux version 4.15.0-43-generic ``` где:
- янв 13 20:55:55 - дата и время события;
- sergiy-pc - хост, на котором произошло событие;
- kernel - источник события, обычно это программа или сервис. В данном случае ядро;
- Linux version 4.15.0-43-generic - само сообщение.
Ниже приводятся примеры фильтрации и перемещения. ### 1.Просмотр логов сервисов
Самый частый случай использования journalctl - когда при запуске какого-либо сервиса с помощью systemd, он не запускается и systemd выдает сообщение подобного содержания: Failed to start service use journalctl -xe for details.
Система сама предлагает какую команду надо выполнить: ``` sudo journalctl -xe ``` эта команда отображает последние сообщения в журнале и добавляет к ним дополнительную информацию, если она есть. Учитывая, что последнее что происходило был не запустившийся сервис, то здесь будут сообщения от него и можно будет понять почему он не запускается.
Чтобы отфильтровать сообщения только от определенного сервиса можно использовать опцию -u. Например: ``` sudo journalctl -eu apache2.service ```
## 1
