進階 User 有時會 ssh 去檢視一些 NAS system log.
例如:
[52789.068120] --- wd:2 rd:4
[52789.068125] disk 0, wo:0, o:1, dev:sda3
[52789.068129] disk 1, wo:0, o:1, dev:sdc3
[52789.085371] md: remove_and_add_spares rdev sdb3 disk -1 0 1 0 0
[52789.085378] md: remove_and_add_spares bdev /dev/sdb3 not exist
[53950.056205] md: md1: recovery done.
[53950.108476] RAID1 conf printout:
[53950.108484] --- wd:2 rd:2
[53950.108489] disk 0, wo:0, o:1, dev:sda4
[53950.108492] disk 1, wo:0, o:1, dev:sdc4
其日期時間格式非人類可直接識別的. (註: 有些 linux dmesg 版本支援 -T 參數, 可直接轉換輸出的日期格式)
在此網站找到轉換方法.
https://stackoverflow.com/questions/13890789/convert-dmesg-timestamp-to-custom-date-format
節錄如下:
#!/bin/sh
# Translate dmesg timestamps to human readable format
# uptime in seconds
uptime=$(cut -d " " -f 1 /proc/uptime)
# remove fraction
uptime=$(echo $uptime | cut -d "." -f1)
# run only if timestamps are enabled
if [ "Y" = "$(cat /sys/module/printk/parameters/time)" ]; then
dmesg | sed "s/[^\[]*\[/\[/" | sed "s/^\[[ ]*\?\([0-9.]*\)\] \(.*\)/\\1 \\2/" | while read timestamp message; do
timestamp=$(echo $timestamp | cut -d "." -f1)
ts1=$(( $(busybox date +%s) - $uptime + $timestamp ))
ts2=$(busybox date -d "@${ts1}")
printf "[%s] %s\n" "$ts2" "$message"
done
else
echo "Timestamps are disabled (/sys/module/printk/parameters/time)"
fi
轉換後的內容如下, 這樣就一目了然了.
[Thu Sep 28 01:48:26 CST 2017] --- wd:2 rd:4
[Thu Sep 28 01:48:26 CST 2017] disk 0, wo:0, o:1, dev:sda3
[Thu Sep 28 01:48:26 CST 2017] disk 1, wo:0, o:1, dev:sdc3
[Thu Sep 28 01:48:26 CST 2017] md: remove_and_add_spares rdev sdb3 disk -1 0 1 0 0
[Thu Sep 28 01:48:26 CST 2017] md: remove_and_add_spares bdev /dev/sdb3 not exist
[Thu Sep 28 02:07:47 CST 2017] md: md1: recovery done.
[Thu Sep 28 02:07:47 CST 2017] RAID1 conf printout:
[Thu Sep 28 02:07:47 CST 2017] --- wd:2 rd:2
[Thu Sep 28 02:07:47 CST 2017] disk 0, wo:0, o:1, dev:sda4
[Thu Sep 28 02:07:47 CST 2017] disk 1, wo:0, o:1, dev:sdc4