dmesg
是一个用于查看和控制内核环形缓冲区的命令。默认情况下,它读取并显示所有来自内核环形缓冲区的消息,这些消息包括系统启动时的信息、硬件检测信息、驱动加载信息等。
基本语法
dmesg [选项]
dmesg --clear
dmesg --read-clear [选项]
dmesg --console-level 级别
dmesg --console-on
dmesg --console-off
核心功能选项
缓冲区操作
选项 | 说明 |
---|
-C , --clear | 清空环形缓冲区内容 |
-c , --read-clear | 显示后清空缓冲区内容 |
-w , --follow | 实时监控新消息(需内核3.5.0+支持) |
输出控制
选项 | 说明 |
---|
-H , --human | 人性化显示(结合颜色、相对时间等) |
-T , --ctime | 显示可读的时间戳(可能不精确) |
-e , --reltime | 显示本地时间和消息间隔 |
-d , --show-delta | 显示时间戳和消息间隔 |
-t , --notime | 不显示时间戳 |
-L , --color | 高亮重要消息 |
过滤选项
选项 | 说明 |
---|
-k , --kernel | 只显示内核消息 |
-u , --userspace | 只显示用户空间消息 |
-l , --level 列表 | 按级别过滤(如err,warn ) |
-f , --facility 列表 | 按设施过滤(如daemon ) |
控制台设置
选项 | 说明 |
---|
-D , --console-off | 禁用消息打印到控制台 |
-E , --console-on | 启用消息打印到控制台 |
-n , --console-level 级别 | 设置控制台日志级别 |
常用命令示例
基本查看
dmesg
dmesg -H
dmesg -T
过滤与诊断
dmesg -l err,crit,alert,emerg
dmesg -f daemon
dmesg | grep -i usb
dmesg -d
缓冲区操作
dmesg -c
dmesg -C
dmesg -w
高级用法
dmesg --ctime --level=err
dmesg -f kernel -l warn
dmesg -x
输出格式说明
典型消息格式
[时间戳] <设施.级别> 消息内容
示例:
[ 3.456789] ACPI: BIOS _OSI(Linux) query ignored
常见日志级别
级别 | 说明 |
---|
emerg | 系统不可用 |
alert | 必须立即采取措施 |
crit | 严重情况 |
err | 错误条件 |
warn | 警告条件 |
notice | 正常但重要的情况 |
info | 信息性消息 |
debug | 调试级消息 |
实际应用场景
1. 诊断硬件问题
dmesg | grep -E 'memory|disk|usb|pci'
2. 查看系统启动信息
dmesg -H | less
3. 监控内核实时消息
dmesg -wH
4. 生成系统诊断报告
dmesg -xTl err,warn > system_errors.log
与其他命令结合
dmesg -l err | cut -d']' -f2- | sort | uniq -c | sort -nr
dmesg -w | grep -i 'usb storage'
注意事项
- 需要root权限才能执行清空缓冲区等操作
- 时间戳选项(
-T
)在系统休眠/恢复后可能不准确 - 实时监控(
-w
)需要内核3.5.0+并支持/dev/kmsg
- 缓冲区大小默认为16392字节,可通过
-s
调整