Где находится кольцевой буфер ядра относительно rsyslog?

Где находится кольцевой буфер ядра относительно rsyslog?

Это rsyslogпросто уровень абстракции поверх кольцевого буфера ядра? Или кольцевой буфер ядра является собственной сущностью и rsyslogвзаимодействие с ним такое же, как и у любого другого "приложения"?

решение1

Хотя в различных документах (включая man dmesg) он упоминается как "кольцевой буфер ядра", возможно, лучше называть его буфером журнала ядра, поскольку "кольцевой буфер" — это общий термин, и я считаю, что ядро ​​также использует кольцевые буферы для различных совершенно не связанных между собой вещей. "Буфер printk" также уместен, после функции пространства ядра, используемой для записи в него.

В любом случае, он находится в пространстве ядра, а интерфейс чтения предоставляется через /proc/kmsg, а интерфейс чтения-записи через /dev/kmsg. Так что если вы как root выполните:

echo "Hello Kernel!" > /dev/ksmg

Вы увидите это, если вы тогда cat /dev/ksmg(хотя вы, вероятно, не увидите этого в каких-либо журналах -- см. комментарий Мэтью Фиппса ниже для возможной причины). Это сырой вывод и не выглядит точно так же, как то, что вы видите из dmesgили в ваших файлах журналов. Есть немногонемного документацииоб этом предоставлено с исходным кодом ядра. Чтение из /proc/kmsg(не то же самое, что /dev/ksmg) не рекомендуется, если запущен (r)syslog.

Rsyslog — один из многихсистемный журналреализации, обычно используемые в Linux. Это пользовательские приложения, которые получают сообщения ядра /proc/ksmgи сообщения от других пользовательских процессов через сокет, /dev/log.

Связанный контент