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

9

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


источник

Ответы:

6

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

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

echo "Hello Kernel!" > /dev/ksmg

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

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

лютик золотистый
источник
2
Я хотел бы отметить, что rsyslog выключил $ KLogPermitNonKernelFacility по умолчанию, поэтому сообщения, не связанные с ядром, из / proc / kmsg будут игнорироваться rsyslog, если вы не включите эту опцию. Это может на самом деле сбить с толку, поскольку Upstart, например, регистрирует в / proc / kmsg не с ядром.
Ванесса Фиппс