Как получить журнал загрузки ядра с помощью журналаctctl?

У меня на моей плате работает systemd / journald . Система была построена с помощью yocto ; systemd версия – 216.

Я хочу получить журнал загрузки ядра, который можно получить с помощью journalctl -k . Но, насколько я вижу, длинная версия этого параметра – --dmesg , что заставляет меня думать, что это извлекается из кольцевого буфера ядра. Очевидно, что если система работает несколько дней, я не могу получить эту информацию. Мое понимание здесь правильно?

Вопрос в том, есть ли опция для journald dump эту информацию сразу после загрузки системы? Если нет, достаточно ли просто вызвать в качестве последнего шага процесса загрузки вызов journalctl -k > dmesg.log ?

3 Solutions collect form web for “Как получить журнал загрузки ядра с помощью журналаctctl?”

Очевидно, что если система работает несколько дней, я не могу получить эту информацию. Мое понимание здесь правильно?

Да. Это зависит от того, сколько генерируется информация журнала, но в конечном итоге информация о загрузке будет прокручиваться с начала кольцевого буфера ядра и журнала systemd. Это не руководство для того, сколько времени потребуется на чьи-либо системы, но у меня есть системы, которые имеют проблемы в течение сотен дней, чьи данные журнала загрузки уже давно прокручиваются в верхней части журнала systemd. Это один из недостатков, заключающийся в том, что один гигантский комбинированный поток журналов, из которого все фанаты влетают, а затем снова отходят назад.

Поэтому возьмите лист из FreeBSD и NetBSD и их производных. Все они имеют службы, которые запускаются один раз, при загрузке сразу после установки локальных файловых систем, которые просто выполняются:

  dmesg> /var/run/dmesg.boot 

Таким образом, моментальный снимок журнала ядра, как и при загрузке, доступен в /var/run/dmesg.boot даже если он с тех пор прокручивал фактические журналы.

Вам просто нужно написать службу systemd, которая делает то же самое. Используйте оболочку для перенаправления,

  ExecStart = / bin / sh -c "exec dmesg> /run/dmesg.boot" 

или использовать что-то вроде redirfd Laurent redirfd или redirfd набора инструментов fdredir

  ExecStart = / usr / local / bin / fdredir --write 1 /run/dmesg.boot dmesg 

Замените journalctl -k если вы хотите сделать снимок журнала systemd, а не только журналом ядра, и сделайте это Type=oneshot . Либо сделайте его multi-user.target помощью multi-user.target либо сделайте его DefaultDependencies=no который basic.target . Обратите внимание, что его не нужно заказывать после монтирования локальной файловой системы (например, local-fs.target ). Этот порядок необходим для FreeBSD и OpenBSD, потому что /var/run может быть файловой системой диска с ними. В системных операционных системах /run – это «файловая система API», созданная при загрузке перед любыми службами.

(Подход, который я лично предпочитаю, заключается не в том, чтобы в первую очередь иметь гигантский центральный лог-поток. Специальная служба подает только канал журнала ядра и регистрируется в частном каталоге журнала. Это занимает намного больше времени, чтобы достичь точки, в которой последний bootstrap информация прокручивается сверху, а также содержит журналы загрузки из предыдущих загрузок.

Однако это намного сложнее настроить в мире systemd, чем тот, который пишет /run/dmesg.boot . Однако это просто в семейном мире daemontools. Это тривиальное упражнение в использовании таких инструментов, как fifo-listen и klog-read или socklog . Проводя выходные данные через журнал dæmon, который записывается в закрытый, автоматически зависящий от размера каталог с автоматическим поворотом, входит в стандартную комплектацию с помощью службы daemontools / runit / s6 / nosh / perp.)

Systemd сохраняет все в своем журнале. Что по крайней мере на моем ноутбуке при умеренном использовании достаточно велико, чтобы вернуться к году назад с настройками по умолчанию.

Если этого не достаточно, вы можете возиться с journald.conf

Затем он просто использует journalctl -t kernel (что похоже на -k , за исключением того, что оно также позволяет вам видеть предыдущие загрузки и использовать фильтры)

Журналы ядра копируются в журнал systemd. Вам не нужно делать это вручную.

ОПИСАНИЕ

systemd-journald – это системная служба, которая собирает и хранит данные регистрации. Он создает и поддерживает структурированные индексированные журналы на основе информации о регистрации, полученной из различных источников:

· Сообщения журнала ядра , через kmsg

  • systemd: ложь о имени процесса, используя sh -c exec idiom
  • Systemd регистрирует только 3 строки ошибок
  • Вывод скрипта python, выполняющегося как единица, не соответствует порядку, в то время как оболочки не отображаются
  • Как очистить журнал
  • Передать журналы из файла в journald
  • Как я могу просмотреть все записи журнала в Centos 7?
  • Как точно определить, почему Systemd входит в аварийный режим
  • Удалить заголовок в результатах журнала
  • Как я могу получить список попыток входа в систему с помощью журналаctctl?
  • Журнал показывает очень старые ботинки, которые не перерабатываются
  • Как получить xconsole для отображения сообщений в системе с помощью journald?
  • Interesting Posts

    Получение ошибки Сервер MySQL MySQL ушел на CentOS

    Какой сценарий может позволить обычным пользователям использовать пространства имен в сети?

    Pipe Python Shell для подсветки источника

    Избегайте проблемы прокрутки терминала при использовании zle reset-prompt

    Как включить STARTTLS в операционной системе Unix

    Основы оболочки Linux: как я могу проверить статус файловых дескрипторов, (где перенаправляются) прямо сейчас без lsof?

    Как восстановить структуру каталогов и файлы из перепутанного раздела

    Как бороться с большим количеством ошибок страницы?

    Сочетание SSD + HDD в один быстрый, большой раздел?

    Как запустить два текущих процесса сразу в linux / bash?

    Linux для отображения содержимого заданного байта файла байтом с символом и его числовым представлением, отображаемым для каждого байта

    Что означает eval X = \ $$ i в UNIX?

    правильный способ монтирования sdcard в linux

    Использование AWK добавляет новую строку, если существует совпадение

    Тайм-аут с «перезагрузкой сетевой сети»

    Linux и Unix - лучшая ОС в мире.