Saya punya (misalnya) entri log ini dalam dmesg
output:
[600711.395348] do_trap: 6 callbacks suppressed
Apakah ada kemungkinan untuk mengubah waktu 'dmesg' ini menjadi 'real' untuk mengetahui, kapan acara ini terjadi?
Sepertinya baru-baru ini diterapkan untuk Quantal (12.10): lihat http://brainstorm.ubuntu.com/idea/17829/ .
Pada dasarnya, dmesg
dilaporkan memiliki saklar baru -T, --ctime
.
Edit. Sebagai ekstensi lain pada jawaban Ignacio, berikut adalah beberapa skrip untuk meningkatkan output dmesg pada sistem yang lebih lama.
(Catatan: untuk versi python dari kode yang ditampilkan di sana, seseorang akan ingin mengganti <
dan >
kembali agar <>
dapat digunakan kembali.)
Akhirnya, untuk nilai tunggal seperti yang 600711.395348
bisa dilakukan
ut=`cut -d' ' -f1 </proc/uptime`
ts=`date +%s`
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"
dan dapatkan tanggal dan waktu acara.
(Harap dicatat bahwa karena kesalahan pembulatan, digit kedua terakhir mungkin tidak akan akurat.).
Sunting (2) : Harap dicatat bahwa - sesuai komentar Womble di bawah ini, - ini hanya akan berfungsi jika mesin tidak hibernasi dll. (Dalam hal ini, orang akan lebih baik melihat syslog
konfigurasi di /etc/*syslog*
dan memeriksa file yang sesuai. Lihat juga : dmesg vs / var / messages .)
date -d"1970-01-01 + $(date +%s) sec - $(cut -d' ' -f1 </proc/uptime) sec + 600711.395348 sec" +"%F %T.%N %Z"
%Z
seharusnyaUTC
, sejakdate +%s
mengembalikan detik sejak UTC. Maka harus dikonversi ke zona waktu lokal.Untuk memperluas jawaban Ignacio, entri yang terkandung di dalamnya
dmesg
biasanya juga dicatat di sistem lain, melalui syslog, yang akan memberi Anda cap waktu "nyata". Kecuali Ubuntu telah mengubah default set-Debian, entri log harus dalam/var/log/kern.log
.sumber
Waktu yang diberikan dalam dmesg dalam detik sejak startup kernel. Jadi, tambahkan saja beberapa detik ketika kernel mulai berjalan (petunjuk: uptime).
sumber
Di busybox, 3 liner di atas tidak berfungsi, jadi inilah cara saya menghitungnya (ganti
1628880.0
dengandmesg
cap waktu Anda ):sumber
dmesg | perl -pe 'use Unix::Uptime; s/^\[(.*)\]/localtime(time()-Unix::Uptime->uptime()+$1)/e'
sumber
Saya tahu ini sudah lama tetapi dmesg sekarang memiliki opsi built -e atau --reatime untuk menampilkan waktu dalam waktu lokal.
sumber