练习 29:内核:内核消息,dmesg

    这是维基百科告诉我们的,Linux 内核的具体内容:

    该机制由固定大小的缓冲区表示,内核向它写入消息。在 Debian Linux 上,系统日志守护进程启动后,从缓冲区发布的信息也会被复制到/var/log/dmesg。这样做是为了保留这些消息,否则将被新的消息覆盖。

    dmesg也是工具的名称,它允许你查看当前在内核缓冲区中的那些消息,并更改此缓冲区大小。

    让我总结一下dmesg相关的文件和程序:

    • dmesg - 打印或控制内核环缓冲区
    • /var/log/dmseg - Debian 发行版中的日志文件,仅包含系统引导期间的dmesg消息副本,而不包含时间戳。
    • /var/log/kern.log - Debian 发行版中的日志文件,包含所有dmesg消息的副本,包括时间戳请注意,rsyslog 日志守护进程启动后,这个时间戳开始变化,这意味着rsyslog启动前,所有引导时的消息将具有相同的时间戳。此文件本身包含/var/log/dmseg
    • /var/log/messages - Debian 发行版中的日志文件,记录所有非调试和非关键消息。它本身包含/var/log/dmesg
    • /var/log/syslog - Debian 发行版中的日志文件,记录了所有信息,但权限相关的信息除外。它包含/var/log/messages/var/log/kern.log中的所有消息。
    1. user1@vm1:~$ date
    2. Tue Jul 24 06:55:33 EDT 2012
    3. user1@vm1:~$ sudo umount /tmp ; sudo mount /tmp
    4. user1@vm1:~$ dmesg | tail
    5. [ 7.166240] tun: Universal TUN/TAP device driver, 1.6
    6. [ 7.166242] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
    7. [ 7.432019] ADDRCONF(NETDEV_UP): eth0: link is not ready
    8. [ 7.435270] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
    9. [ 7.435927] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    10. [ 17.592044] eth0: no IPv6 routers present
    11. [ 217.497357] kjournald starting. Commit interval 5 seconds
    12. [ 217.497561] EXT3 FS on sda8, internal journal
    13. [ 217.497564] EXT3-fs: mounted filesystem with ordered data mode.
    14. user1@vm1:~$ sudo tail /var/log/dmesg /var/log/messages /var/log/syslog /var/log/kern.log
    15. [ 6.762569] EXT3 FS on sda5, internal journal
    16. [ 6.762572] EXT3-fs: mounted filesystem with ordered data mode.
    17. [ 6.767237] kjournald starting. Commit interval 5 seconds
    18. [ 6.767407] EXT3 FS on sda6, internal journal
    19. [ 6.767410] EXT3-fs: mounted filesystem with ordered data mode.
    20. [ 7.166240] tun: Universal TUN/TAP device driver, 1.6
    21. [ 7.166242] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
    22. [ 7.432019] ADDRCONF(NETDEV_UP): eth0: link is not ready
    23. [ 7.435270] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
    24. [ 7.435927] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    25. ==> /var/log/messages <==
    26. Jul 24 06:52:07 vm1 kernel: [ 6.767407] EXT3 FS on sda6, internal journal
    27. Jul 24 06:52:07 vm1 kernel: [ 6.767410] EXT3-fs: mounted filesystem with ordered data mode.
    28. Jul 24 06:52:07 vm1 kernel: [ 7.166240] tun: Universal TUN/TAP device driver, 1.6
    29. Jul 24 06:52:07 vm1 kernel: [ 7.166242] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
    30. Jul 24 06:52:07 vm1 kernel: [ 7.432019] ADDRCONF(NETDEV_UP): eth0: link is not ready
    31. Jul 24 06:52:07 vm1 kernel: [ 7.435270] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
    32. Jul 24 06:52:07 vm1 kernel: [ 7.435927] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    33. Jul 24 06:55:36 vm1 kernel: [ 217.497357] kjournald starting. Commit interval 5 seconds
    34. Jul 24 06:55:36 vm1 kernel: [ 217.497561] EXT3 FS on sda8, internal journal
    35. ==> /var/log/syslog <==
    36. Jul 24 06:52:08 vm1 acpid: waiting for events: event logging is off
    37. Jul 24 06:52:08 vm1 /usr/sbin/cron[882]: (CRON) INFO (pidfile fd = 3)
    38. Jul 24 06:52:08 vm1 /usr/sbin/cron[883]: (CRON) STARTUP (fork ok)
    39. Jul 24 06:52:08 vm1 /usr/sbin/cron[883]: (CRON) INFO (Running @reboot jobs)
    40. Jul 24 06:52:16 vm1 kernel: [ 17.472049] tap0: no IPv6 routers present
    41. Jul 24 06:52:16 vm1 kernel: [ 17.592044] eth0: no IPv6 routers present
    42. Jul 24 06:55:36 vm1 kernel: [ 217.497357] kjournald starting. Commit interval 5 seconds
    43. Jul 24 06:55:36 vm1 kernel: [ 217.497561] EXT3 FS on sda8, internal journal
    44. Jul 24 06:55:36 vm1 kernel: [ 217.497564] EXT3-fs: mounted filesystem with ordered data mode.
    45. ==> /var/log/kern.log <==
    46. Jul 24 06:52:07 vm1 kernel: [ 7.166240] tun: Universal TUN/TAP device driver, 1.6
    47. Jul 24 06:52:07 vm1 kernel: [ 7.166242] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
    48. Jul 24 06:52:07 vm1 kernel: [ 7.432019] ADDRCONF(NETDEV_UP): eth0: link is not ready
    49. Jul 24 06:52:07 vm1 kernel: [ 7.435270] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
    50. Jul 24 06:52:07 vm1 kernel: [ 7.435927] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    51. Jul 24 06:52:16 vm1 kernel: [ 17.472049] tap0: no IPv6 routers present
    52. Jul 24 06:52:16 vm1 kernel: [ 17.592044] eth0: no IPv6 routers present
    53. Jul 24 06:55:36 vm1 kernel: [ 217.497357] kjournald starting. Commit interval 5 seconds
    54. Jul 24 06:55:36 vm1 kernel: [ 217.497561] EXT3 FS on sda8, internal journal
    55. Jul 24 06:55:36 vm1 kernel: [ 217.497564] EXT3-fs: mounted filesystem with ordered data mode.
    1. 打印出当前日期和时间。
    2. 从内核消息缓冲区打印最后 10 条消息。
    3. /var/log/dmesg, /var/log/messages, /var/log/syslog和打印最后 10 条消息。