Solusi 1:
dmesg
membaca buffer cincin log Kernel. Itu tidak melakukan cap waktu. Yang harus Anda lakukan adalah mengonfigurasi syslog untuk mengambil log kernel dari buffer itu dan mengirimkannya ke file (jika belum diatur untuk melakukannya). Perhatikan, konfigurasi syslog CentOS 5.x default mengirimkan log kernel ke /var/log/messages
, seingat saya.
Jika Anda ingin mengirim semua log kernel (dmesg) ke /var/log/kern.log
, menggunakan daemon syslog default, Anda akan menambahkan baris seperti berikut ke /etc/syslog.conf
kern.* /var/log/kern.log
Solusi 2:
Ada solusi "Mengaktifkan Stempel Waktu untuk dmesg/Kernel Ring Buffer"
Anda dapat menambahkan:
printk.time=1
ke kernel cmdline.
Bagi saya, saya telah menambahkan ke rc.local di semua mesin dengan boneka. Lebih mudah bagi saya) :
if test -f /sys/module/printk/parameters/time; then
echo 1 > /sys/module/printk/parameters/time
fi
Solusi 3:
Saya telah menulis skrip sederhana ini. Ya, itu lambat. Jika Anda menginginkan sesuatu yang lebih cepat, Anda sebenarnya menulis skrip di perl, python, atau yang lainnya. Saya yakin skrip sederhana ini dapat membantu Anda memahami cara menghitungnya.
Perlu diketahui bahwa saya mengabaikan pecahan detik yang terdaftar di setiap baris (setelah . di stempel waktu).
#!/bin/bash
localtime() {
perl -e "print(localtime($1).\"\n\");";
}
upnow="$(cut -f1 -d"." /proc/uptime)"
upmmt="$(( $(date +%s) - ${upnow} ))"
dmesg | while read line; do
timestamp="$(echo "${line}" | sed "s/^\[ *\([0-9]\+\).*/\1/g")"
timestamp=$(( ${timestamp} + ${upmmt} ))
echo "${line}" | sed "s/^[^]]\+]\(.*\)/$(localtime "${timestamp}") -\1/g"
done
Saya harap ini membantu. :)