Чтобы найти именно то, что вам нужно, необходимо научится перемещаться по этому списку. Формат вывода лога довольно простой:
янв 13 20:55:55 sergiy-pc kernel: Linux version 4.15.0-43-generic
Давайте перейдем к примерам фильтрации и перемещения.
Самый частый случай использования journalctl — это когда вы пытаетесь запустить какой-либо сервис с помощью systemd, он не запускается и systemd выдает вам такое сообщение подобного содержания: Failed to start service use journalctl -xe for details. Система сама предлагает вам какую команду надо выполнить:
Как вы помните из опций, эта команда отображает последние сообщения в журнале и добавляет к ним дополнительную информацию, если она есть. Учитывая, что последнее, что мы делали — был наш сервис, то здесь будут сообщения от него и вы быстро сможете понять почему он не запускается.
Чтобы отфильтровать сообщения только от определенного сервиса можно использовать опцию -u. Например:
sudo journalctl -eu apache2.service
С помощью опции -f можно указать утилите, что необходимо выводить новые сообщения в реальном времени:
В этом режиме less не поддерживается, поэтому для выхода нажмите сочетание клавиш Ctrl+C.
В логе journalctl содержатся все логи, в том числе и логи загрузки. Для того чтобы открыть лог последней загрузки используйте опцию -b:
Посмотреть список всех сохраненных загрузок можно командой:
sudo journalctl -list-boots
Теперь, чтобы посмотреть сообщения для нужной загрузки используйте её идентификатор:
sudo journalctl -b 37d5c906c9c6404682f029b2c34ec9dc
С помощью опции —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 будет означать полтора часа назад.
Если вы хотите посмотреть только сообщения ядра используйте опцию -k:
По умолчанию journalctl выводит информацию с помощью утилиты less, в которой вы можете её удобно листать и просматривать. Но формат вывода можно изменить:
Чтобы указать нужный формат используйте опцию -o. Например:
sudo journalctl -o json-pretty
sudo journalctl -eo json-pretty
Сначала нужно посмотреть сколько ваши логи занимают на диске. Для этого используйте такую команду:
sudo journalctl —disk-usage
Чтобы уменьшить размер лога можно использовать опцию —vacuum-size. Например, если вы хотите, чтобы ваши файлы журналов занимали на диске не более 2 Гб, выполните команду:
sudo journalctl —vacuum-size=2G
Теперь старые логи будут удалены, пока общий объем хранилища не будет составлять 2 гигабайта. Также можно удалять логи по времени. Для этого используется опция —vacuum-time. Например, оставим только логи за последний год:
В этой статье мы разобрали как пользоваться journalctl в Linux. Наличие этой утилиты в системе не означает, что теперь вы не можете пользоваться обычными файлами логов. Большинство сервисов как и раньше пишут свои основные логи в файлы, а в лог journalctl пишутся сообщения при старте сервисов, а также различные системные сообщения.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Adblock