Dmesg -T 无时间戳的解决方法

现在版本的 dmesg -T 都是带时间戳的。

image-20220725172454313

但是老的机器,很有可能是没有 -T 这个参数的,直接 dmesg 是这样的:

image-20220725172554722

这个时间戳是天书啊,这还算好的,好歹有。还有更差的,连戳子都没有:

image-20220725172816958

戳子都没有的,需要做以下步骤来加上,机器重启后必须再执行一遍:

1echo 1 > /sys/module/printk/parameters/printk_time

同时写个脚本,/usr/local/bin/dmesgt.sh

 1#!/bin/bash
 2# Translate dmesg timestamps to human readable format
 3
 4# desired date format
 5date_format="%a %b %d %T %Y"
 6
 7# uptime in seconds
 8uptime=$(cut -d " " -f 1 /proc/uptime)
 9
10# run only if timestamps are enabled
11if [ "Y" = "$(cat /sys/module/printk/parameters/time)" ]; then
12  dmesg | sed "s/^\[[ ]*\?\([0-9.]*\)\] \(.*\)/\\1 \\2/" | while read timestamp message; do
13    printf "[%s] %s\n" "$(date --date "now - $uptime seconds + $timestamp seconds" +"${date_format}")" "$message"
14  done
15else
16  echo "Timestamps are disabled (/sys/module/printk/parameters/time)"
17fi

这样就可以了,最后我们测试一下:

1echo "Enabled timestamps" | tee /dev/kmsg

看到带时间戳的信息就可以了:

1$ dmesg
2[...]
3Bluetooth: RFCOMM TTY layer initialized
4Bluetooth: RFCOMM socket layer initialized
5Bluetooth: RFCOMM ver 1.11
6[...]
7[271309.434405] Enabled timestamps
8[...]

一次mongodb Cpu很high的解决方法
LVM系统的Restore
comments powered by Disqus