Journalctl: различия между версиями

Материал из Wiren Board
 
(не показано 9 промежуточных версий этого же участника)
Строка 2: Строка 2:
[[Image: journalctl — logs.png |500px|thumb|right| Просмотр системного журнала с помощью journalctl]]
[[Image: journalctl — logs.png |500px|thumb|right| Просмотр системного журнала с помощью journalctl]]
== Описание ==
== Описание ==
journalctl — это консольная утилита для просмотра системного журнала ОС Linux, поэтому перед вводом команд подключитесь к [[SSH]] контроллера.
journalctl — это консольная утилита для просмотра системного журнала ОС Linux, поэтому перед вводом команд подключитесь к контроллеру по [[SSH]] или [[Debug UART| отладочный порт]].


Здесь приведены примеры, которые решают большинство задач. Полный список параметров утилиты, смотрите командой:
Здесь приведены примеры, которые решают большинство задач. Полный список параметров смотрите командой <code>journalctl --help</code> и в [https://manpages.debian.org/bullseye/systemd/journalctl.1.en.html документации на утилиту].
<syntaxhighlight lang="bash">
journalctl --help
</syntaxhighlight>


Перемещаться по выводу утилиты можно с помощью клавиш:
Перемещаться по выводу утилиты можно с помощью клавиш:
Строка 71: Строка 68:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
journalctl -u wb-mqtt-serial
journalctl -u wb-mqtt-serial
</syntaxhighlight>
Просмотр сообщений от определённого сервиса в реальном времени:
<syntaxhighlight lang="bash">
journalctl -u wb-mqtt-serial -f
</syntaxhighlight>
</syntaxhighlight>


Строка 78: Строка 80:
journalctl --since -1d
journalctl --since -1d
</syntaxhighlight>
</syntaxhighlight>
*: вместо d можно использовать h — часы, m — минуты, w — недели
*: можно использовать: w — недели, d — дни, h — часы, m — минуты
* записи с определённого времени:
* записи с определённого времени:
*:<syntaxhighlight lang="bash">
*:<syntaxhighlight lang="bash">
Строка 86: Строка 88:
*:<syntaxhighlight lang="bash">
*:<syntaxhighlight lang="bash">
journalctl --since "2020-02-13 07:00:00" --until "2020-02-14 07:00:00"
journalctl --since "2020-02-13 07:00:00" --until "2020-02-14 07:00:00"
</syntaxhighlight>
* записи за последний час
*:<syntaxhighlight lang="bash">
journalctl --since "1 hour ago"
</syntaxhighlight>
</syntaxhighlight>


Параметры можно комбинировать, например, выведем все сообщения драйвера wb-mqtt-serial с момента последней загрузки:
Вывод команды можно фильтровать по уровню важности сообщений:
* 0: emergency — чрезвычайная ситуация
* 1: alerts — предупреждения, требуется вмешательство
* 2: critical — критическое состояние
* 3: errors — ошибки
* 4: warning — предупреждения
* 5: notice — уведомления
* 6: info — информационные сообщения
* 7: debug — отладочные сообщения
Например, чтобы вывести все ошибки:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
journalctl -b 0 -u wb-mqtt-serial
journalctl -p 3
</syntaxhighlight>
 
Параметры можно комбинировать, например:
* показать предупреждения, записанные драйвером wb-mqtt-serial с момента последней загрузки:
*:<syntaxhighlight lang="bash">
journalctl -b 0 -p 4 -u wb-mqtt-serial
</syntaxhighlight>
* показать ошибки, записанные драйвером wb-mqtt-serial за последний час:
*:<syntaxhighlight lang="bash">
journalctl --since "1 hour ago" -p 3 -u wb-mqtt-serial
</syntaxhighlight>
</syntaxhighlight>


== Сохранение в текстовый файл ==
== Сохранение в текстовый файл ==
Вывод утилиты journalctl можно сохранить в файл, для этого добавьте в конец команды <code></code>>> filename.txt</code>, например, сохраним в файл сообщения драйвера wb-mqtt-serial:
Вывод утилиты journalctl можно сохранить в файл, для этого добавьте в конец команды <code>>> filename.txt</code>, например, сохраним в файл сообщения драйвера wb-mqtt-serial:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
journalctl -u wb-mqtt-serial >> /tmp/log-file.txt
journalctl --no-pager -u wb-mqtt-serial >> /tmp/log-file.txt
</syntaxhighlight>
</syntaxhighlight>
Так как вывод команды будет сохранён в файл <code>/tmp/log-file.txt</code>, то на консоли вы ничего не увидите.
Так как вывод команды будет сохранён в файл <code>/tmp/log-file.txt</code>, то на консоли вы ничего не увидите.


О том, как скопировать файл с контроллера на компьютер, читайте в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]].
О том, как скопировать файл с контроллера на компьютер, читайте в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]].
== Прочее ==
 
== Занимаемое логами место ==
Посмотреть занимаемое системным журналом место:
Посмотреть занимаемое системным журналом место:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">

Текущая версия на 15:51, 27 декабря 2022

Просмотр системного журнала с помощью journalctl

Описание

journalctl — это консольная утилита для просмотра системного журнала ОС Linux, поэтому перед вводом команд подключитесь к контроллеру по SSH или отладочный порт.

Здесь приведены примеры, которые решают большинство задач. Полный список параметров смотрите командой journalctl --help и в документации на утилиту.

Перемещаться по выводу утилиты можно с помощью клавиш:

  • q — выйти из просмотра.
  • — вверх на одну строку.
  • — вниз на одну строку.
  • b — вверх на одну страницу
  • Пробел — вниз на одну страницу
  • g — перейти на первую строку
  • / — поиск по журналу
  • n — найти следующее вхождение
  • N — найти предыдущее вхождение

Архив

journald при каждой загрузке создаёт новый журнал, а старый закрывает. Список доступных журналов можно посмотреть командой:

# journalctl --list-boots
-2 301af672ad2b400fa9c6562a3403d179 Sat 2021-10-30 10:25:03 +04—Thu 2021-11-04 10:39:39 +04
-1 1238af7b5cfb4dd9a10bc54a1dd63067 Thu 2021-11-04 10:39:53 +04—Thu 2021-11-04 13:42:19 +04
 0 cc99bb41d7524321a70bddda34c1cceb Thu 2021-11-04 13:43:31 +04—Thu 2021-11-04 14:15:20 +04

По умолчанию journalctl выводит сообщения из всех доступных журналов, но вы можете сократить выборку, для этого укажите номер журнала в параметре -b:

journalctl -b -1

Просмотр журнала

Вывести все сообщения:

journalctl

Выводить новые сообщения:

journalctl -f

Открыть журнал и перемотать его к последней записи:

journalctl -e

Вывести последние 5 строк журнала:

journalctl -n 5

Фильтрация результатов

Лог последней загрузки операционной системы:

journalctl -b

Посмотреть сообщения ядра (dmesg):

journalctl -k

Посмотреть журнал определённого сервиса, например, wb-mqtt-serial:

journalctl -u wb-mqtt-serial

Просмотр сообщений от определённого сервиса в реальном времени:

journalctl -u wb-mqtt-serial -f

Фильтр по времени:

  • записи за последние сутки
    journalctl --since -1d
    
    можно использовать: w — недели, d — дни, h — часы, m — минуты
  • записи с определённого времени:
    journalctl --since "2020-02-13 07:00:00"
    
  • записи за период
    journalctl --since "2020-02-13 07:00:00" --until "2020-02-14 07:00:00"
    
  • записи за последний час
    journalctl --since "1 hour ago"
    

Вывод команды можно фильтровать по уровню важности сообщений:

  • 0: emergency — чрезвычайная ситуация
  • 1: alerts — предупреждения, требуется вмешательство
  • 2: critical — критическое состояние
  • 3: errors — ошибки
  • 4: warning — предупреждения
  • 5: notice — уведомления
  • 6: info — информационные сообщения
  • 7: debug — отладочные сообщения

Например, чтобы вывести все ошибки:

journalctl -p 3

Параметры можно комбинировать, например:

  • показать предупреждения, записанные драйвером wb-mqtt-serial с момента последней загрузки:
    journalctl -b 0 -p 4 -u wb-mqtt-serial
    
  • показать ошибки, записанные драйвером wb-mqtt-serial за последний час:
    journalctl --since "1 hour ago" -p 3 -u wb-mqtt-serial
    

Сохранение в текстовый файл

Вывод утилиты journalctl можно сохранить в файл, для этого добавьте в конец команды >> filename.txt, например, сохраним в файл сообщения драйвера wb-mqtt-serial:

journalctl --no-pager -u wb-mqtt-serial >> /tmp/log-file.txt

Так как вывод команды будет сохранён в файл /tmp/log-file.txt, то на консоли вы ничего не увидите.

О том, как скопировать файл с контроллера на компьютер, читайте в статье Просмотр файлов контроллера с компьютера.

Занимаемое логами место

Посмотреть занимаемое системным журналом место:

journalctl --disk-usage

Удалить все сообщения, старше 1 недели:

journalctl --vacuum-time=1weeks

Удалить все сообщения таким образом, чтобы журнал занял 100 Мбайт:

journalctl --vacuum-size=100M

Настроить параметры ведения системного журнала можно в файле /etc/systemd/journald.conf.