nanti dmesg mendukung flag -T, mungkin coba gunakan -T jika dmesg Anda mendukungnya.
ilansch
centos 7+ mendukungdmesg -T
rogerdpack
Jawaban:
12
dmesgmembaca buffer ring log Kernel. Itu tidak melakukan cap waktu. Yang harus Anda lakukan adalah mengkonfigurasi syslog untuk mengambil log kernel dari buffer itu dan mengirimkannya ke file (jika belum diatur untuk melakukannya). Catatan, default CentOS 5.x syslog config 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
Terima kasih atas jawabannya. Bagi siapa pun yang mencari yang menjalankan CentOS 6, saya menemukannya di/etc/rsyslog.conf
Safado
Yap, dengan CentOS (dan RHEL) 6.x, mereka mengubah daemon syslog default dari sysklogd lama menjadi rsyslog. Ini tersedia sebagai paket (didukung) untuk RHEL / CentOS 5.x juga.
Christopher Cashell
1
Yah, saya sudah memiliki ini dalam daftar hal untuk mencari tahu, tapi sekarang Anda telah menyelamatkan saya beberapa googling
Safado
8
Ada solusi "Mengaktifkan Stempel Waktu untuk dmesg / Kernel Ring Buffer"
Anda bisa menambahkan:
printk.time=1
ke cmdline kernel.
Sedangkan 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
Menggunakan rc.localbenar-benar semacam solusi buruk untuk ini (menggunakan rc.localhampir selalu merupakan solusi buruk untuk apa pun). Sebuah solusi yang lebih baik akan menempatkan printk.time = 1ke dalam /etc/sysctl.confatau file dalam /etc/sysctl.d/. Itulah alasan file-file ini ada. Menjejalkan hal-hal pada rc.localakhirnya akan meninggalkan Anda dengan start-up yang rapuh, berbelit-belit, berantakan, tidak dapat diandalkan.
Christopher Cashell
Ini yang ada di komentar dari @ChristopherCashell adalah satu-satunya jawaban yang benar untuk pertanyaan ini. Sayang itu bukan jawaban yang sebenarnya.
Petr
1
Saya sudah menulis skrip sederhana ini. Ya, lambat. Jika Anda menginginkan sesuatu yang lebih cepat, Anda sebenarnya menulis skrip di perl, python, atau yang lainnya. Saya yakin skrip sederhana ini dapat memberi Anda pemahaman tentang cara penghitungannya.
Harap perhatikan bahwa saya mengabaikan fraksi detik yang terdaftar di setiap baris (setelah. Di stempel waktu).
perl -n adalah cara untuk membaca input standar dan membaca ke dalam variabel $ _.
Tubuh (bukan bagian BEGIN) kemudian dijalankan sekali untuk setiap baris.
BEGIN menjalankan kode dalam {} satu kali.
$ a adalah awal dari dmesg sejak zaman (detik)
Perintah s / ... mengambil nilai dalam $ _ dan mengganti bagian \ s * #####. ###### dari timestamp dengan versi "localtime" dari offset dmesg ($ 1) ditambahkan ke waktu mulai sistem ($ a)
print $ a mencetak dmesg dengan cap waktu ramah lokal yang diganti dengan cap waktu "detik sejak booting".
perl -n adalah cara untuk membaca input standar dan membaca ke dalam variabel $ _.
Tubuh (bukan bagian BEGIN) kemudian dijalankan sekali untuk setiap baris.
BEGIN menjalankan kode dalam {} satu kali.
$ a adalah awal dari dmesg sejak zamannya
Perintah s / ... mengambil nilai dalam $ _ dan mengganti bagian #####. ###### bagian dari timestamp dengan versi "localtime" dari offset dmesg ($ 1) ditambahkan ke sistem start waktu ($ a)
print $ a mencetak dmesg dengan cap waktu ramah lokal yang diganti dengan cap waktu "detik sejak booting".
@kasperd Inilah artinya: - perl -n adalah cara untuk membaca input standar dan membaca variabel $ _. Tubuh (bukan bagian BEGIN) kemudian dijalankan sekali untuk setiap baris. - BEGIN menjalankan kode dalam {} satu kali. $ a adalah awal dari dmesg sejak zaman - s/...Perintah mengambil nilai dalam $ _ dan mengganti bagian #####. ###### dari cap waktu dengan versi "localtime" dari offset dmesg ($ 1 ) ditambahkan ke waktu mulai sistem ($ a). - print $amencetak dmesg dengan cap waktu ramah lokal yang diganti dengan cap waktu "detik sejak booting".
dmesg -T
Jawaban:
dmesg
membaca buffer ring log Kernel. Itu tidak melakukan cap waktu. Yang harus Anda lakukan adalah mengkonfigurasi syslog untuk mengambil log kernel dari buffer itu dan mengirimkannya ke file (jika belum diatur untuk melakukannya). Catatan, default CentOS 5.x syslog config 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
sumber
/etc/rsyslog.conf
Ada solusi "Mengaktifkan Stempel Waktu untuk dmesg / Kernel Ring Buffer"
Anda bisa menambahkan:
ke cmdline kernel.
Sedangkan saya, saya telah menambahkan ke rc.local di semua mesin dengan boneka. Lebih mudah bagi saya):
sumber
rc.local
benar-benar semacam solusi buruk untuk ini (menggunakanrc.local
hampir selalu merupakan solusi buruk untuk apa pun). Sebuah solusi yang lebih baik akan menempatkanprintk.time = 1
ke dalam/etc/sysctl.conf
atau file dalam/etc/sysctl.d/
. Itulah alasan file-file ini ada. Menjejalkan hal-hal padarc.local
akhirnya akan meninggalkan Anda dengan start-up yang rapuh, berbelit-belit, berantakan, tidak dapat diandalkan.Saya sudah menulis skrip sederhana ini. Ya, lambat. Jika Anda menginginkan sesuatu yang lebih cepat, Anda sebenarnya menulis skrip di perl, python, atau yang lainnya. Saya yakin skrip sederhana ini dapat memberi Anda pemahaman tentang cara penghitungannya.
Harap perhatikan bahwa saya mengabaikan fraksi detik yang terdaftar di setiap baris (setelah. Di stempel waktu).
Saya harap ini membantu. :)
sumber
Modifikasi skrip pada baris kasus tidak dimulai dengan "["
sumber
Ini adalah pembaruan atas saran Plutoid, menghilangkan spasi utama dari cap waktu.
sumber
Script perl kecil seperti di bawah ini. Ini cara umum, dan saya bukan penulisnya.
perl -n
adalah cara untuk membaca input standar dan membaca ke dalam variabel $ _.sumber
s/...
Perintah mengambil nilai dalam $ _ dan mengganti bagian #####. ###### dari cap waktu dengan versi "localtime" dari offset dmesg ($ 1 ) ditambahkan ke waktu mulai sistem ($ a). -print $a
mencetak dmesg dengan cap waktu ramah lokal yang diganti dengan cap waktu "detik sejak booting".