linux环境下,转换dmesg 信息时间戳的方式

----使用linux 环境测试的时候,基本上都会用到dmesg cmd显示相关fail info,但是info中并不会显示具体的时间,如果此时大家需要核对fail的时间点,就会比较头大,那怎么办呢?
-----下面会提供一个简单的shell 脚本,通过执行脚本的方式,就可以转换为时间戳

1.执行dmesg 后,会显示如下信息

                                                可以看到并没有显示具体的时间戳

2.随便给脚本起个名字timer_c.sh

    如果是从windows环境copy到linux环境,只好执行下dos2unix 命令,避免执行脚本时报错

    然后给脚本添加 可执行 权限

3. 执行脚本时,后面把dmesg info的开头数字带上就ok

    执行完脚本,就可以显示具体的时间了


4. 附脚本内容

#!/bin/bash

if [ $# -ne 1 ];then

echo "input dmesg timer"

exit 1

fi

unix_time=`echo "$(date +%s) - $(cat /proc/uptime | cut -f 1 -d' ') + ${1}" | bc`

echo ${unix_time}

date -d "@${unix_time}" '+%Y-%m-%d %H:%M:%S'

<think>好的,用户现在问的是如何在Linux下查看内核打印信息。首先,我需要确认用户的需求是什么。查看内核打印信息通常是指查看内核日志,这些日志记录了系统运行时的各种信息,包括硬件检测、驱动加载、错误信息等。用户可能是遇到了系统问题,比如硬件不识别或者内核崩溃,需要查看日志来排查问题。 接下来,我需要回忆Linux下常用的查看内核日志的方法。最常见的是使用dmesg命令,这个命令可以直接显示内核环形缓冲区中的信息。另外,有些系统可能使用journalctl来查看系统日志,包括内核信息。还有可能需要查看/var/log/kern.log或者/var/log/messages文件,这些文件可能存储了内核日志。 然后,用户可能的背景需要考虑。如果用户是刚接触Linux的新手,可能需要详细的步骤说明和常见用例。如果用户是有经验的开发者,可能需要更高级的参数或者实时监控的方法。因此,在回答中应该覆盖基本命令和常用选项,同时提到一些进阶用法,比如实时监控、过滤特定级别的信息或者根据时间戳查看。 另外,用户的问题可能涉及到不同的发行版,比如Ubuntu、CentOS等,它们的日志文件位置可能不同。例如,Ubuntu通常使用/var/log/kern.log,而CentOS可能使用/var/log/messages。需要指出这一点,避免用户混淆。 还需要考虑安全性问题,比如普通用户可能需要sudo权限来执行某些命令,比如dmesg。在一些系统中,默认情况下普通用户可能无法直接运行dmesg,这时候需要提示用户使用sudo或者修改权限。 另外,用户可能希望了解如何过滤特定的信息,比如只看错误信息,或者某个设备的信息。这时候可以介绍grep结合dmesg使用,或者journalctl的过滤选项。 最后,需要提醒用户注意日志的时间戳格式,dmesg默认显示的是从系统启动开始的秒数,可以通过-T参数转换为人类可读的时间,但需要确认系统是否支持。同时,如果系统使用systemd,journalctl可能更适用,并且支持更多的过滤选项。 总结下来,回答的结构应该包括常用的命令(dmesg, journalctl, 日志文件),常用参数,过滤方法,实时监控,时间戳转换,以及不同发行版的差异。同时,提供一些实际例子,让用户能够直接应用这些命令解决问题。</think>在Linux系统中查看内核打印信息(内核日志)主要通过以下几种方式,每种方法适用于不同场景: --- ### 一、核心工具 `dmesg` **最直接的内核日志查看工具**,显示内核环形缓冲区内容 #### 1. 基本用法 ```bash sudo dmesg # 查看完整内核日志 ``` #### 2. 常用参数 ```bash sudo dmesg -T # 显示人类可读的时间戳(需要内核3.5+) sudo dmesg -H # 人性化显示(带分页器) sudo dmesg --level=err,warn # 只看错误/警告信息 sudo dmesg -k # 仅显示内核消息(过滤用户空间消息) ``` #### 3. 实时监控 ```bash sudo dmesg -w # 类似tail -f,持续显示新日志 ``` --- ### 二、系统日志文件 **持久化存储的内核日志**(位置因发行版而异) | 发行版 | 日志路径 | |-------------|-----------------------| | Ubuntu/Debian | `/var/log/kern.log` | | RHEL/CentOS | `/var/log/messages` | | Arch | `/var/log/journal/` | 查看示例: ```bash sudo tail -f /var/log/kern.log # 实时跟踪Ubuntu内核日志 grep -i error /var/log/messages # 在CentOS中检索错误信息 ``` --- ### 三、`journalctl`(systemd系统专用) **更强大的日志查询工具** ```bash journalctl -k # 专看内核日志 journalctl --dmesg # 等效于dmesg journalctl -k -p err # 过滤错误级别日志 journalctl -k --since "09:00" # 按时间过滤 journalctl -k -o short-full # 控制输出格式 ``` --- ### 四、高级过滤技巧 #### 1. 按设备过滤 ```bash dmesg | grep -i usb # 查看USB设备相关日志 ``` #### 2. 按时间范围查询 ```bash dmesg -T | grep "2024-01-01 10:" # 精确到分钟的日志 ``` #### 3. 查看启动阶段日志 ```bash journalctl -b -0 -k # 本次启动的内核日志 journalctl -b -1 -k # 上次启动的内核日志 ``` --- ### 五、日志级别说明 | 级别关键字 | 说明 | 查看命令 | |--------------|-----------------|------------------------| | emerg/alert | 紧急/警报 | `dmesg -l emerg` | | crit | 严重错误 | `dmesg -l crit` | | err | 运行时错误 | `dmesg -l err` | | warn | 警告信息 | `dmesg -l warn` | | info | 常规信息(默认显示) | `dmesg -l info` | --- ### 六、典型应用场景 #### 1. 诊断硬件问题 ```bash dmesg | grep -i -e memory -e disk -e sata ``` #### 2. 驱动加载检查 ```bash dmesg | grep -i -e driver -e firmware ``` #### 3. 内核崩溃分析 ```bash journalctl -k --boot=-1 | grep oops ``` --- ### 七、配置相关文件 ```bash /etc/rsyslog.conf # 传统syslog配置 /etc/systemd/journald.conf # systemd日志配置 /sys/module/printk/parameters/ # 内核打印等级控制 ``` **调整日志级别(临时)**: ```bash echo 8 > /proc/sys/kernel/printk # 设置控制台日志级别为DEBUG ``` --- ### 最佳实践建议 1. **优先使用`dmesg -T`** 获得可读时间戳 2. 关键问题诊断时**结合`journalctl`的时间过滤功能** 3. 定期归档重要日志:`dmesg > kernel_log_$(date +%F).txt` 4. 对于嵌入式设备,可通过`/proc/kmsg`直接访问原始日志流 掌握这些方法能有效诊断硬件兼容性、驱动故障、内核崩溃等问题,是Linux系统管理的重要技能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bigger_One

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值