syslogd和klogd

 ◆syslog

  这个服务程序太重要了,大部分的系统维护都会用到它,也就是网络或系统管理员经常用到的log 文件。daemon在执行时其实是执行两个程序:syslogd和klogd,介绍如下,其分别负责不同种类的log,但全部的信息在系统刚开完机之后,会全部存放在/var/log/message。

  ? klogd

  先介绍klogd是因为当一开始写入/var/log/message时,klogd所记录的信息会比syslogd 的顺序优先,原因是klogd所记录的是尚未进入操作系统的信息,但其实一开始的这些信息并不是由klogd所记录的,而是自加载kernel 时,就已经开始记录的。在系统尚未进入操作系统阶段,还在加载kernel及执行initrd时,会将信息先记录在/proc/kmsg文件中(因为在initrd阶段没有实体硬盘可供记录),等进入操作系统执行完klogd后,klogd再将/proc/kmsg的所有内容全数填入/var/log/message文件中,这也是为何在/var/log/message文件的一开始,依然可以看到刚开机在加载kernel以及initrd阶段的信息(如图5-13中连CPU的启用都看得到,信息中也注明了是kernel的信息)。


    常用到的dmesg指令其实也就是将klogd检测出来的kernel信息,它直接通过console呈现在用户面前。在进入操作系统之后,kernel当然还在运行,而此时的kernel若检测到内部错误发生,klogd则会通过/boot/System.map文件找到kernel所在,如此一来,kernel就可以直接通过klogd的管道将信息再度呈现在用户面前。

? syslogd

  在klogd填入所有kernel加载及initrd阶段的信息之后,接着执行的就是这一节所提到的服务级程序,而这些程序所产生的信息,就由syslogd负责整理,所以,这些信息会直接加在刚刚klogd的信息后面。在进入操作系统后就没有依照klogd或syslogd的顺序,只要产生信息,就直接依/etc/syslog.conf文件的定义,写入/var/log/message信息文件。

  图5-14 的方框就是在kernel信息结束后其中一个xinetd服务激活的信息,从图中的第一行可以看出kernel信息结束后,紧跟着就是服务软件的信息。


    从/etc/syslog.conf文件可以找出所有目前系统通过syslogd所记录的信息,有时候在找某软件的信息时,也可以从这个文件中看出要以哪一个信息文件为主,当然前提是该软件必须支持syslogd的信息记录格式。

你可能感兴趣的:(linux)