
Это 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
.