Wo befindet sich der Kernel-Ringpuffer im Verhältnis zu rsyslog?

Wo befindet sich der Kernel-Ringpuffer im Verhältnis zu rsyslog?

Ist das rsyslognur eine Abstraktionsschicht über dem Kernel-Ringpuffer? Oder ist der Kernel-Ringpuffer eine eigene Entität und rsyslogseine Interaktion ist wie bei jeder anderen „Anwendung“?

Antwort1

Obwohl in verschiedenen Dokumentationen (einschließlich man dmesg) davon die Rede ist, dass es sich um den „Kernel-Ringpuffer“ handelt, wäre es vielleicht besser, ihn als Kernel-Protokollpuffer zu bezeichnen, da „Ringpuffer“ ein allgemeiner Begriff ist und der Kernel meiner Meinung nach Ringpuffer auch für verschiedene völlig andere Dinge verwendet. Der „printk-Puffer“ ist ebenfalls angemessen, nach der Kernel-Space-Funktion, die zum Schreiben in ihn verwendet wurde.

Wie dem auch sei, es befindet sich im Kernel-Speicher und eine Leseschnittstelle wird über bereitgestellt /proc/kmsgund eine Lese-/Schreibschnittstelle über /dev/kmsg. Wenn Sie also als Root Folgendes eingeben:

echo "Hello Kernel!" > /dev/ksmg

Sie werden es sehen, wenn Sie dann cat /dev/ksmg(wahrscheinlich werden Sie es jedoch in keinem Protokoll sehen -- siehe Matthew Phipps' Kommentar unten für einen möglichen Grund). Dies ist eine Rohausgabe und sieht nicht genau so aus wie das, was Sie in dmesgoder aus Ihren Protokolldateien sehen. Es gibt ein wenigein bisschen DokumentationInformationen hierzu werden in den Kernelquellen bereitgestellt. Das Lesen von /proc/kmsg(nicht dasselbe wie /dev/ksmg) wird davon abgeraten, wenn (r)syslog läuft.

Rsyslog ist einer von mehrerenSyslogImplementierungen, die häufig unter Linux verwendet werden. Dies sind Userland-Anwendungen, die /proc/ksmgüber einen Socket Kernel-Nachrichten und Nachrichten von anderen Userland-Prozessen beziehen /dev/log.

verwandte Informationen