klogd&syslogd与dmesg-嵌入式系统获取linux内核log

本文介绍了在嵌入式系统中获取Linux内核日志的工具klogd、syslogd和dmesg的工作原理和使用方法。klogd用于记录内核消息,syslogd处理系统日志,dmesg则用于显示内核ring buffer中的日志。klogd通过syslogd将日志保存到文件,而dmesg直接输出到控制台。在嵌入式系统中,klogd的选项有限,而在PC上功能更强大。dmesg的选项包括清除、设置缓冲区大小和日志级别。
摘要由CSDN通过智能技术生成

概述

  有的时候运行linux内核的设备(现在市场上有很多智能设备运行android或GNU/Linux)发生了死机、挂起或其他不正常的行为,但是该设备并没有连接控制台串口,如何获取内核log就需要这些工具了,内核可能发生过oops,通过这些工具可以查看发生错误的具体内容,帮助进行问题诊断。

  下面简单介绍一下获取内核log工具的原理和使用。

0x1 klogd&syslogd

0x11 klogd

  klogd是一个专门截获并记录 Linux 内核消息的守护进程,可以指定输出到控制台,文件或syslogd守护进程等,常用情况是把内核消息输出到syslogd进程,由syslogd统一处理。

0x12 syslogd

  syslogd负责记录系统中kenel或应用程序(邮件、新闻等)产生的各种log信息的工具。这些信息被写入到系统文件中,通常是/var/log目录下,或者是输出到远程server,让使用者进行故障排除、追踪尝试非法入侵的使用者等等。

  本文主要关注的是内核log,syslogd涉及到的log信息种类很多,并且都有对应等级描述,配置文件syslog.conf需要用规定的语法进行配置,内容比较多,这里不做过多介绍,要更详细了解syslogd及配置方法,请参考https://linux.die.net/man/8/syslogd

  klogd获取内核log通过两种方式,一种是系统调用syslog(),glibc对应用程序的API是klogctl(),两个函数的原型分别为:
int syslog(int type, char *bufp, int len); /* No wrapper provided in glibc */
/* The glibc interface */
#include <sys/klog.h>
int klogctl(int type, char *bufp, int len);

  另一种方式是,通过/proc/kmsg,以正常打开文件形式,通过系统调用open、read、write去操作。

  klogd输出到

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值