Linux系统信息日志

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

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

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

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

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

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

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

1.NAME

2.dmesg - print or control the kernel ring buffer

3.SYNOPSIS

4.dmesg [ -c ] [ -n level ] [ -s bufsize ]

5.DESCRIPTION

6.dmesg is used to examine or control the kernel ring buffer.

7.The program helps users to print out their bootup mes- sages. Instead of copying the messages by hand, the user need only:

8.dmesg
>

boot.messages

9.and mail the boot.messages file to whoever can debug their

10.problem.

11.OPTIONS

12.-c Clear the ring buffer contents after printing.

13.-sbufsize

14.Use a buffer of size bufsize to query the kernel ring buffer. This is 16392 by default. (The default kernel syslog buffer size was 4096 at first, 8192 since 1.3.54, 16384 since 2.1.113.) If you have set the kernel buffer to be larger than the default then this option can be used to view the entire buffer.

15.-nlevel

16.Set the level at which logging of messages is done to the console. For example, -n 1 prevents all messages, expect panic messages, from appearing on the console. All levels of messages are still written to /proc/kmsg, so syslogd(8) can still be used to control exactly where kernel messages appear.

17.When the -n option is used, dmesg will not print or clear the kernel ring buffer.

18.When both options are used, only the last option on the command line will have an effect.

  从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日志处理了。

时间: 2024-08-27 23:18:33

Linux系统信息日志的相关文章

Linux系统信息

Linux系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/memin

Linux学习日志1-基本知识

1.冯.诺依曼体系计算机五大组成部件: 1.控制器:控制其他四个部件的运作 2.运算器:负责计算加减乘除 3.存储器:存放运算的数据来源与结果 4.输入设备:接收数据输入存入存储器 5.输出设备:从存储器接收数据输出 2.Linux的起源: 1991年一个芬兰大学生Linus Torvalds参考其老师的教学用操作系统Minix的思想(注意仅仅是思想),自己写了一个操作系统内核,命名为Linux 0.0.1,发布在comp.os.minix新闻组上,正式宣告Linux内核的诞生.从那时起,Lin

Linux系统信息查看命令大全

Linux系统信息查看命令大全 最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令. 想起以前写过的一篇其实Linux这样用更简单, 发现这些系统信息查看命令也可以总结出一篇小小的东西来了. 另外这里还有非常多的命令, 可以作为参考. 系统# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -

Linux系统信息[Linux常用命令笔记]

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验

Linux学习日志2-vim使用基础

vim是linux操作系统下的一个文本编辑工具,功能非常强大,但刚学习起来比较复杂.vim的所有功能要讲明白得有几百页,在这里只是记录一下vim的一些基本用法. 首先vim打开文件的三种方式: vim +# xxx(#是数字):表示打开xxx文件并将光标定位到指定行. vim -o xx1 xx2 xx3:表示同时打开三个文件,垂直分割显示 vim -O xx1 xx2 xx3:表示同时打开三个文件,水平分割显示 多个文件间跳转:键入ctrl+w后:→向左.←向右.↑向上.↓向下 vim打开文件

Linux nginx日志按天分割实例

Linux nginx日志按天分割实例 nginx的日志有个小缺点,日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件非常大,不便于管理 这就需要我们自己来实现了,按日期每天生产一个日志文件 思路 每天零点把默认日志文件改名为当天日期,再重新打开新的日志文件 使用定时任务来执行脚本,脚本中执行改名和重新打开日志文件的操作 向Nginx主进程发送 USR1 信号,就可以重新打开日志文件 实现 #/bin/bash #备份日志的路径bakpath='/home/nginx/

Linux学习日志day1——无人值守系统安装DHCP+TFTP+PXE+Kickstar

Linux学习日志day1--无人值守批量系统远程网络安装(DHCP+TFTP+PXE+Kickstar)                                         --作者:江信瀚 服务器环境介绍: 主机名:workstation.example.com 关闭SElinux以及防火墙 虚拟机:VMware(关闭了VMware的DHCP服务) 网卡配置: 静态IP获取! IPV6全部都删除,因为根本用不到 子网IP可以在VMware中设置 8.8.8.8是谷歌的DNS服务器

《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖

<Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在<中华读书报>( 2015年01月28日 19 版) 原文下载:http://epaper.gmw.cn/zhdsb/images/2015-01/28/19/2015012819_pdf.pdf 这3本原创Linux图书,全部收录于中国科学院图书馆.国图以及211.985高校图书馆,广获读者好评,在当

linux学习日志

Linux学习日志 基本用户接口模式是shell ,乌班图一般是用 terminal这个终端来输入命令 F11全屏,ctrl+shift+"+" 变大,ctrl+-变小. 命令格式 命令  [参数] [操作对象] cmd    options  opreation cd ~ 回到用户主目录 ls 查看目录下的内容 ./当前目录 ../父目录 ls -l pwd 可以查看当前工作目录 print working directory man 命令名 可以查命令帮助 cd 切换目录 touc