轻松搞定Linux日志处理

本文介绍Linux日志处理方法,包括dmesg命令的使用及syslogd守护进程的工作原理,帮助读者了解Linux系统如何记录和处理日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[导读 ]现在很多人把Linux 配置成了一个开发工具,而用 Windows 来娱乐。你是Linux的使用者么?本文为你讲解Linux日志处理方法,希望你能掌握Linux日志处理。

  现在很多人把Linux 配置成了一个开发工具,而用 Windows 来娱乐。你是Linux的使用者么?本文为你讲解Linux日志处理方法,希望你能掌握Linux日志处理。每个使用UNIX/Linux的人都知道日志 的用处,那你是否清楚Linux这些日志信息处理的来龙去脉呢?

  我们可以看到Linux系统信息日志的途径基本有以下2种:

  (1)dmesg查看----这个命令比较常见

  (2)/var/log/下的文件

  那下面我们就从这个2个途径着手,一步步的走下去.

  (一)首先,我们来看dmesg这个常见的命令背后隐藏的是什么!!

  (1)先让我们来MAN一下这个家伙

  -------------man dmesg--------------------------

  1. NAME
  2. dmesg-printorcontrolthekernelringbuffer
  3. SYNOPSIS
  4. dmesg[-c][-nlevel][-sbufsize]
  5. DESCRIPTION
  6. dmesgisusedtoexamineorcontrolthekernelringbuffer.
  7. Theprogramhelpsuserstoprintouttheirbootupmes-sages.Insteadofcopyingthemessagesbyhand,theuserneedonly:
  8. dmesg > boot.messages
  9. andmailtheboot.messagesfiletowhoevercandebugtheir
  10. problem.
  11. OPTIONS
  12. -cCleartheringbuffercontentsafterprinting.
  13. -sbufsize
  14. Useabufferofsizebufsizetoquerythekernelringbuffer.Thisis16392bydefault.(Thedefaultkernelsyslogbuffersizewas4096atfirst,8192since1.3.54,16384since2.1.113.)Ifyouhavesetthekernelbuffertobelargerthanthedefaultthenthisoptioncanbeusedtoviewtheentirebuffer.
  15. -nlevel
  16. Setthelevelatwhichloggingofmessagesisdonetotheconsole.Forexample,-n1preventsallmessages,expectpanicmessages,fromappearingontheconsole.Alllevelsofmessagesarestillwrittento/proc/kmsg,sosyslogd(8)canstillbeusedtocontrolexactlywherekernelmessagesappear.
  17. Whenthe-noptionisused,dmesgwillnotprintorclearthekernelringbuffer.
  18. Whenbothoptionsareused,onlythelastoptiononthecommandlinewillhaveaneffect.

  从Linux提供的手册,我们可以得知一条最重要的信息dmesg是从kernel 的ring buffer(环缓冲区)中读取信息的.

  (2)那什么是ring buffer呢?

  在Linux中,所有的系统信息(包内核信息)都会传送到ring buffer中.而内核产生的信息由printk()打印出来。系统启动时所看到的信息都是由该函数打印到屏幕中。 printk()打出的信息往往以 <0><2>...这的数字表明消息的重要级别。高于一定的优先级别会打印到屏幕上, 否则只会保留在系统的缓冲区中(ring buffer)。

  至于dmesg具体是如何从ring buffer中读取的,大家可以看dmesg.c源代码.很短,比较轻易读懂.

  (二)dmesg怎么搞的大家应该很明白了吧.至于/var/log/下的文件更是大家熟悉得不能再熟悉了!

  (1)/var/log/..下为什么有这么多文件呢?

  一句话解释: 是syslogd这个守护进程根据/etc/syslog.conf,将不同的服务产生的Log记录到不同的文件中.

  这里的/etc/syslog.conf我就不细说了,很多这方面的信息(去查吧).

  (2)既然知道了,/var/log/..是由syslogd这个守护进程产生的.那就再顺着这条线走下去.

  Linux系统启动后,由/etc/init.d/sysklogd先后启动klogd,syslogd两个守护进程。

  其中klogd会通过syslog()系统调用或者读取proc文件系统来从系统缓冲区(ring buffer)中得到由内核printk()

  发出的信息.而syslogd是通过klogd来读取系统内核信息.

  我想至此,大家心理应该对log产生,读取等一系列的动作有所感觉.

  总结:

  (1)所有系统信息是输出到ring buffer中去的.dmesg所显示的内容也是从ring buffer中读取的.

  (2)Linux系统中/etc/init.d/sysklogd会启动2个守护进程:Klogd&&Syslogd

  (3)klogd是负责读取内核信息的,有2种方式:

  syslog()系统调用(这个函数用法比较全,大家去MAN一下看看)

  直接的对/proc/kmsg进行读取(再这提一下,/proc/kmsg是专门输出内核信息的地方)

  (4)Klogd的输出结果会传送给syslogd进行处理,syslogd会根据/etc/syslog.conf的配置把log

  信息输出到/var/log/下的不同文件中。

  这样你就能很好的完成Linux日志处理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值