gpt4 book ai didi

linux - printk 参数和 syslog.h 设施名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:48 26 4
gpt4 key购买 nike

我们可以传递很多参数给 printk:

 printk (KERN_INFO  "blahahaha");
printk (KERN_EMERG "bababa");

等等。这些标签与 syslog.conf 中的设施级别有什么关系吗? KERN_EMERG 是否要打印到“kern.emerg”指定的设施?这两个实体是如何联系在一起的?

谢谢

最佳答案

按问题顺序:

Do These Tags have anything to do with the facility levels found in syslog.conf?

是的。该标签实际上是一对,KERN EMERG,即 KERN 设施和 EMERG 级别 - 它们在上层-case 因为它是一个预处理器宏,按照惯例以大写形式编写。 Linux 内核只关心 KERN 设施,因此没有定义其他设施。

所有这些 printk 命令都会记录到内部内核环缓冲区。根据您的内核设置,此消息可能会或可能不会被复制到控制台(可能是屏幕或串行终端)。

Is KERN_EMERG going to print to facilities specified by "kern.emerg"?

假设您的意思是登录与 kern.emerg 匹配的文件,那么可以。 syslog.conf 中与此匹配的条目示例是 kern.*kern.emerg*.emergemerg 级别的消息被认为是致命的,即发生了严重的错误。

来自此级别内核的消息可能不会在系统日志文件中结束,因为该错误可能会阻止将数据写入硬盘。

How are these two entities tied?

有一个辅助守护进程,通常称为 klogd。它从内核环形缓冲区获取输出,默认情况下将它们传递给 syslogd,后者根据 syslog.conf 文件记录它们。

总结:

printk 将消息放入 ring bufferring bufferklogd 读取并转发给 syslogdSyslogd 将此数据记录到 syslogd.conf 文件指定的目的地。

关于linux - printk 参数和 syslog.h 设施名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com