前言
本文讲解诊断系统故障命令dmesg
命令简介
dmesg 命令用于显示系统开机信息,可用于诊断系统故障。
内核会将系统开机信息存储在ring buffer中,可以使用dmesg命令来查看,开机信息保存在/var/log/dmesg文件中。
用法
查看帮助
dmesg -h
usage:
dmesg [options]
display or control the kernel ring buffer.
options:
-c, --clear clear the kernel ring buffer
-c, --read-clear read and clear all messages
-d, --console-off disable printing messages to console
-e, --console-on enable printing messages to console
-f, --file use the file instead of the kernel log buffer
-f, --facility restrict output to defined facilities
-h, --human human readable output
-k, --kernel display kernel messages
-l, --color[=] colorize messages (auto, always or never)
colors are enabled by default
-l, --level restrict output to defined levels
-n, --console-level set level of messages printed to console
-p, --nopager do not pipe output into a pager
-p, --force-prefix force timestamp output on each line of multi-line messages
-r, --raw print the raw message buffer
-s, --syslog force to use syslog(2) rather than /dev/kmsg
-s, --buffer-size buffer size to query the kernel ring buffer
-u, --userspace display userspace messages
-w, --follow wait for new messages
-x, --decode decode facility and level to readable string
-d, --show-delta show time delta between printed messages
-e, --reltime show local time and time delta in readable format
-t, --ctime show human-readable timestamp (may be inaccurate!)
-t, --notime don't show any timestamp with messages
--time-format show timestamp using the given format:
[delta|reltime|ctime|notime|iso]
suspending/resume will make ctime and iso timestamps inaccurate.
-h, --help display this help
-v, --version display version
supported log facilities:
kern - kernel messages
user - random user-level messages
mail - mail system
daemon - system daemons
auth - security/authorization messages
syslog - messages generated internally by syslogd
lpr - line printer subsystem
news - network news subsystem
supported log levels (priorities):
emerg - system is unusable
alert - action must be taken immediately
crit - critical conditions
err - error conditions
warn - warning conditions
notice - normal but significant condition
info - informational
debug - debug-level messages
for more details see dmesg(1).
命令语法
dmesg [options]
选项说明
-c #显示信息后,清除ring buffer中的内容
-s #默认值为8196,刚好等于ring buffer的大小
-n #设置记录信息的层级
-d #禁用打印消息到控制台
-e #启用打印消息到控制台
-h #打印帮助文本并退出
-k #打印内核消息
-n #设置将消息记录到控制台的级别
-r #打印原始消息缓冲区
-s #使用多少大小的缓冲区来查询内核环缓冲区。默认情况下为16392-t #打印人类可读时间戳
-t #不打印内核的时间戳
-u #打印用户空间消息
-v #输出版本信息并退出-
x #将设施和级别(优先级)编号解码为可读的前缀
应用举例
在openwrt上查看开机信息
dmesg
[ 0.000000] linux version 5.4.143 (*******) (gcc version 8.4.0 (openwrt gcc 8.4.0 r16279-5cc 0535800)) #0 tue aug 31 2208 2021
[ 0.000000] board has ddr2
[ 0.000000] analog pmu set to hw control
[ 0.000000] digital pmu set to hw control
[ 0.000000] soc type: mediatek mt7628an ver:1 eco:2
[ 0.000000] printk: bootconsole [early0] enabled
[ 0.000000] cpu0 revision is: 00019655 (mips 24kec)
[ 0.000000] mips: machine is jotale js76x8 (32m)
[ 0.000000] initrd not found or empty - disabling initrd
[ 0.000000] primary instruction cache 64kb, vipt, 4-way, linesize 32 bytes.
[ 0.000000] primary data cache 32kb, 4-way, pipt, no aliases, linesize 32 bytes
[ 0.000000] zone ranges:
[ 0.000000] normal [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] movable zone start for each node
[ 0.000000] early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] on node 0 totalpages: 32768
[ 0.000000] normal zone: 288 pages used for memmap
[ 0.000000] normal zone: 0 pages reserved
[ 0.000000] normal zone: 32768 pages, lifo batch:7
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] built 1 zonelists, mobility grouping on. total pages: 32480
[ 0.000000] kernel command line: console=ttys0,115200 rootfstype=squashfs,jffs2
[ 0.000000] dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.000000] writing errctl register=00000000
[ 0.000000] readback errctl register=00000000
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
*******
[ 11.641746] usbcore: registered new interface driver cdc_subset
[ 11.689505] ppp generic driver version 2.4.2
[ 11.703356] usbcore: registered new interface driver qmi_wwan
[ 11.730537] rndis_host 1-1:1.0 eth1: register 'rndis_host' at usb-101c0000.ehci-1, rndis device, ac:4 bb9e5
[ 11.741397] usbcore: registered new interface driver rndis_host
[ 11.789009] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 11.855712] urngd: v1.0.2 started.
[ 12.515084] random: crng init done
[ 12.518593] random: 1 urandom warning(s) missed due to ratelimiting
[ 19.978363] rt3050-esw 10110000.esw: link changed 0x00
[ 22.202128] br-lan: port 1(eth0.1) entered blocking state
[ 22.207696] br-lan: port 1(eth0.1) entered disabled state
[ 22.213547] device eth0.1 entered promiscuous mode
[ 22.218473] device eth0 entered promiscuous mode
[ 22.255696] br-lan: port 1(eth0.1) entered blocking state
[ 22.261264] br-lan: port 1(eth0.1) entered forwarding state
[ 23.004559] rt3050-esw 10110000.esw: link changed 0x01
这样打印信息不方便查找关键信息
查看前25行开机信息
dmesg | head -n 25
[ 0.000000] linux version 5.4.143 (fan@fan-think-pc) (gcc version 8.4.0 (openwrt gcc 8.4.0 r16279-5cc0535800)) #0 tue aug 31 2208 2021
[ 0.000000] board has ddr2
[ 0.000000] analog pmu set to hw control
[ 0.000000] digital pmu set to hw control
[ 0.000000] soc type: mediatek mt7628an ver:1 eco:2
[ 0.000000] printk: bootconsole [early0] enabled
[ 0.000000] cpu0 revision is: 00019655 (mips 24kec)
[ 0.000000] mips: machine is jotale js76x8 (32m)
[ 0.000000] initrd not found or empty - disabling initrd
[ 0.000000] primary instruction cache 64kb, vipt, 4-way, linesize 32 bytes.
[ 0.000000] primary data cache 32kb, 4-way, pipt, no aliases, linesize 32 bytes
[ 0.000000] zone ranges:
[ 0.000000] normal [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] movable zone start for each node
[ 0.000000] early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] on node 0 totalpages: 32768
[ 0.000000] normal zone: 288 pages used for memmap
[ 0.000000] normal zone: 0 pages reserved
[ 0.000000] normal zone: 32768 pages, lifo batch:7
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] built 1 zonelists, mobility grouping on. total pages: 32480
[ 0.000000] kernel command line: console=ttys0,115200 rootfstype=squashfs,jffs2
查看后25行开机信息
dmesg | tail -n 25
[ 11.352236] gact probability on
[ 11.361732] mirror/redirect action on
[ 11.395872] u32 classifier
[ 11.398710] input device check on
[ 11.402442] actions configured
[ 11.463279] usbcore: registered new interface driver cdc_wdm
[ 11.613359] xt_time: kernel timezone is -0000
[ 11.626466] usbcore: registered new interface driver cdc_ether
[ 11.641746] usbcore: registered new interface driver cdc_subset
[ 11.689505] ppp generic driver version 2.4.2
[ 11.703356] usbcore: registered new interface driver qmi_wwan
[ 11.730537] rndis_host 1-1:1.0 eth1: register 'rndis_host' at usb-101c0000.ehci-1, rndis device, acb3eb:e5
[ 11.741397] usbcore: registered new interface driver rndis_host
[ 11.789009] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 11.855712] urngd: v1.0.2 started.
[ 12.515084] random: crng init done
[ 12.518593] random: 1 urandom warning(s) missed due to ratelimiting
[ 19.978363] rt3050-esw 10110000.esw: link changed 0x00
[ 22.202128] br-lan: port 1(eth0.1) entered blocking state
[ 22.207696] br-lan: port 1(eth0.1) entered disabled state
[ 22.213547] device eth0.1 entered promiscuous mode
[ 22.218473] device eth0 entered promiscuous mode
[ 22.255696] br-lan: port 1(eth0.1) entered blocking state
[ 22.261264] br-lan: port 1(eth0.1) entered forwarding state
[ 23.004559] rt3050-esw 10110000.esw: link changed 0x01
查看与内存相关的开机信息
dmesg | grep -i memory
[ 0.000000] early memory node ranges
[ 0.000000] memory: 122688k/131072k available (4436k kernel code, 192k rwdata, 1016k rodata, 1192k init, 193k bss, 8384k reserved, 0k cma-reserved)
[ 0.526438] freeing unused kernel memory: 1192k
[ 0.531064] this architecture does not have kernel memory protection.
查看与usb相关的开机信息
dmesg | grep -i usb
[ 1.884358] usbcore: registered new interface driver usbfs
[ 1.890096] usbcore: registered new interface driver hub
[ 1.895617] usbcore: registered new device driver usb
[ 1.907868] ehci_hcd: usb 2.0 'enhanced' host controller (ehci) driver
[ 1.939711] phy phy-10120000.usbphy.0: remote usb device wakeup disabled
[ 1.946525] phy phy-10120000.usbphy.0: utmi 16bit 30mhz
[ 1.957713] ehci-platform 101c0000.ehci: new usb bus registered, assigned bus number 1
[ 1.984466] ehci-platform 101c0000.ehci: usb 2.0 started, ehci 1.00
[ 1.991901] hub 1-0 usb hub found
[ 4.628468] usb 1-1: new high-speed usb device number 2 using ehci-platform
[ 11.463279] usbcore: registered new interface driver cdc_wdm
[ 11.626466] usbcore: registered new interface driver cdc_ether
[ 11.641746] usbcore: registered new interface driver cdc_subset
[ 11.703356] usbcore: registered new interface driver qmi_wwan
[ 11.730537] rndis_host 1-1:1.0 eth1: register 'rndis_host' at usb-101c0000.ehci-1, rndis device, acb3eb:e5
[ 11.741397] usbcore: registered new interface driver rndis_host
关于数据中心的云计算可行性的CIO指南
SMSC发表高速USB 2.0连接方案—USB3803集线器
可以和路人交流的自动驾驶汽车
带电作业太危险,高空输电线路进行带电作业的“特种兵”机器人发布
中国科研团队研制出可医用的纳米机器人
Linux诊断系统故障命令dmesg详解
买macbookpro后悔了,Mac太贵而且端口极其不便捷
这种新型材质会让可穿戴设备脱胎换骨
深入浅出学习eTs(二)拖拽式UI
回顾美国是如何摧毁日本的芯片产业的事件
未来五年 人工智能为半导体带来的收益将增长13倍以上
如何解决USB Type-C应用开发过程中的各种问题
浪涌保护器的工作原理及应用场景分析
F5从“代码到用户” 战略升级,协助企业加速数字化转型
有关手机的OTG功能
七彩虹iGameZ390VulcanXV20主板评测 在用料和做工上甚至不逊于某些品牌的旗舰产品
实用的光控延时开关电路图
2018年中国家电市场全面承压 新一轮组织架构调整和经营模式开始变革
智慧酒店有哪一些智能化设备
小米6充电重启最新消息:华为P10闪存门还没过,小米6又被曝出严重问题!