改进 dmesg 的输出时间

dmesg 的输出里,每行开头是时间信息,通常是这样的:

中括号里的值就是时间,只不过是以本次引导为基准的流逝。

有无办法将其显示为一目了然的时间呢?首先尝试了一下 Linux 下的人性化参数 -h 不对,顺便看了下帮助竟然是需要 -H 。加上以后输出变成了这样:

隔一阵只能显示一个基准时间,之后显示为流逝偏移。要不手动加工下?按行就地编辑,sed 是第一联想物,先得把中括号里的内容匹配出来吧?嗯,假设要替换成一个固定字符串的话,应该是这样:dmesg | sed "s/^\[[0-9.]*\]/dandy/g"。然而我们的期望并非如此简单,要处理的点至少有:1. 获取到系统本次引导的基准时间;2. 把匹配到的内容与之运算;3. 将运算结果回填/输出。搜索发现,awk 是可行的,且有前人成果:

最后。其实呢,dmesg 命令有个 -T 参数,可以直接输出可读的日期和时间。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注