diff options
| author | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
|---|---|---|
| committer | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
| commit | e5abc1fe99340b979b18864d978179f71fe8f5c5 (patch) | |
| tree | 98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /LINUX/JOURNALCTL.md | |
First
Diffstat (limited to 'LINUX/JOURNALCTL.md')
| -rw-r--r-- | LINUX/JOURNALCTL.md | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/LINUX/JOURNALCTL.md b/LINUX/JOURNALCTL.md new file mode 100644 index 0000000..f3ba698 --- /dev/null +++ b/LINUX/JOURNALCTL.md @@ -0,0 +1,160 @@ +## Синтаксис и опции 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 + +Чтобы найти именно то, что вам нужно, необходимо научится перемещаться по этому списку. Формат вывода лога довольно простой: + +**янв 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` + +### 2. Просмотр логов в режиме tail + +С помощью опции -f можно указать утилите, что необходимо выводить новые сообщения в реальном времени: + +`sudo journalctl -f` + +В этом режиме less не поддерживается, поэтому для выхода нажмите сочетание клавиш **Ctrl+C**. + +### 3. Просмотр логов загрузки + +В логе journalctl содержатся все логи, в том числе и логи загрузки. Для того чтобы открыть лог последней загрузки используйте опцию -b: + +`sudo journalctl -b` + +Посмотреть список всех сохраненных загрузок можно командой: + +`sudo journalctl -list-boots` + +Теперь, чтобы посмотреть сообщения для нужной загрузки используйте её идентификатор: + +`sudo journalctl -b 37d5c906c9c6404682f029b2c34ec9dc` + +### 4. Фильтрация по дате + +С помощью опции **--since** вы можете указать дату и время, начиная с которой нужно отображать логи: + +`sudo journalctl --since "2019-01-20 15:10:10"` + +Опция **--until** помогает указать по какую дату вы хотите получить информацию: + +`sudo journalctl -e --until "2019-01-20 15:05:50"` + +Или сразу скомбинируем две эти опции чтобы получить логи за нужный период: + +`sudo journalctl --since "2019-01-20 15:10:10" --until "2019-01-20 15:05:50"` + +Кроме даты в формате YYYY-MM-DD в этих опциях можно использовать такие слова, как yesterday, today, и tomorrow. Также допустимы конструкции **1 day ago** (один день назад) или **3 hours ago** (три часа назад). Ещё можно использовать знаки + и -. Например **-1h30min** будет означать полтора часа назад. + +### 5. Журнал ядра + +Если вы хотите посмотреть только сообщения ядра используйте опцию -k: + +`sudo journalctl -ek` + +### 6. Настройка формата вывода + +По умолчанию journalctl выводит информацию с помощью утилиты less, в которой вы можете её удобно листать и просматривать. Но формат вывода можно изменить: + +- **short** - используется по умолчанию; +- **verbose** - также, как и short, только выводится намного больше информации; +- **json** - вывод в формате json, одна строка лога в одной строке вывода; +- **json-pretty** - форматированный вывод json для более удобного восприятия; +- **cat** - отображать только сообщения, без метаданных. + +Чтобы указать нужный формат используйте опцию -o. Например: + +`sudo journalctl -o json-pretty` + +Или: + +`sudo journalctl -eo json-pretty` + +### 7. Очистка логов + +Сначала нужно посмотреть сколько ваши логи занимают на диске. Для этого используйте такую команду: + +`sudo journalctl --disk-usage` + +Чтобы уменьшить размер лога можно использовать опцию --vacuum-size. Например, если вы хотите, чтобы ваши файлы журналов занимали на диске не более 2 Гб, выполните команду: + +`sudo journalctl --vacuum-size=2G` + +Теперь старые логи будут удалены, пока общий объем хранилища не будет составлять 2 гигабайта. + +Также можно удалять логи по времени. Для этого используется опция --vacuum-time. Например, оставим только логи за последний год: + +`journalctl --vacuum-time=1years`
\ No newline at end of file |
