'Dmesg' saat biçimini 'gerçek' saat biçimine dönüştürme


42

(Örneğin) dmesgçıktıda bu günlük girişi var :

[600711.395348] do_trap: 6 callbacks suppressed

Bu olay gerçekleştiğinde, bu 'dmesg' zamanını 'gerçek' zamana çevirme olasılığı var mı?

Yanıtlar:


59

Quantal için son zamanlarda uygulanmış gibi görünüyor (12.10): bkz. Http://brainstorm.ubuntu.com/idea/17829/ .

Temel olarak, dmesgyeni bir anahtar olduğu bildirilmektedir -T, --ctime.


Düzenle. Ignacio'nin cevabındaki bir diğer uzantı olarak, işte eski sistemlerde dmesg çıktısını artıran bazı betikler.

(Not: orada gösterilen kodun python sürümü için, tekrar kullanılabilir olması için değiştirmek &lt;ve &gt;geri dönmek istenecektir <>.)


Sonunda, tek bir değer için bir tane 600711.395348yapabilir

ut=`cut -d' ' -f1 </proc/uptime` 
ts=`date +%s` 
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"

ve etkinlik tarihini ve saatini alın.

(Yuvarlama hataları nedeniyle son ikinci rakamın muhtemelen doğru olmayacağını lütfen unutmayın.).

Düzenleme (2) : O Lütfen not - aşağıda Womble açıklama gereği, - bu sadece iş makinesi vb hibernated değildi eğer (Bu durumda, daha iyi bir bakmak zorundadır syslogde yapılandırmasında /etc/*syslog*. Ve uygun dosyaları kontrol Ayrıca bkz : dmesg vs / var / messages .)


4
Ek bir bonus olarak, eğer makine daha önce askıya alınmışsa, tamamen mahvoluyorsunuz, çünkü uykuda geçirilen süre hesaba katılmaz.
womble

Womble'ın yorumu süper önemsiz! Hazırda bekleme moduna geçen veya bekleme durumunda olan bir dizüstü bilgisayar kullanıyorsanız, bu yanlış zamanı gösterir. Asıl dosyayı görmek için /var/log/kern.log dosyasını kullanmalısınız.
oligofren

Tek astar:date -d"1970-01-01 + $(date +%s) sec - $(cut -d' ' -f1 </proc/uptime) sec + 600711.395348 sec" +"%F %T.%N %Z"
kgibm

Not: Yorumumu artık düzenleyemiyorum, ancak UTC’den bu yana saniye döndürdüğünden beri %Zbu olmalı . Daha sonra yerel saat dilimine dönüştürülmek zorunda kalacaktı. UTCdate +%s
kgibm

1
@kgibm: (2) ile aynı fikirdeyim; (1) 'e gelince, tek gömleklere karşı hiçbir şeyim yok - ama aslında burada bir nokta görmüyorum: yukarıdaki kod kasıtlı olarak okunabilirlik için üç satıra bölünmüştür ( nasıl yapılacağını anlamalarına ihtiyacım var. çalışır, mümkün olduğu kadar kompakt yapmaz; bunun için sırayla daha iyi oluşturacağım) ve boyut (daha uzun değişken isimlere sahip olmayı çok isterdim, ama bu satır 3'ü kabus gibi gösterir); Öte yandan, muhtemelen bir terminaldeki tüm uzun satırı yazmazsınız, fakat dosyayı bir dosyaya koyup çalıştırılabilir hale getirirsiniz - yani burada da büyük bir kazanç elde edemezsiniz.
ジ ョ 5 ジ

17

Ignacio'nin cevabını genişletmek için, içerdiği girişler dmesgtipik olarak sistemin başka bir yerinde syslog aracılığıyla da kaydedilir, bu da size "gerçek" bir zaman damgası verir. Ubuntu, Debian set varsayılanını değiştirmediyse, log girişleri içeride olmalıdır /var/log/kern.log.


1
Cent OS 5 ve 6'da, log girişi / var / log / messages'dedir.
emerino

11

Dmesg'de verilen süre, çekirdek başlangıcından beri saniye cinsindendir. Yani, çekirdeğin çalışmaya başlamasına sadece birkaç saniye ekleyin (ipucu: çalışma süresi).


1
Bu, yalnızca hiçbir zaman bekleme durumuna geçmeyen bir sistem kullanıyorsanız işe yarar. Aksi takdirde, günlükleri kullanmanız gerekir.
oligofren

2

BusyBox günü, 3 astar yukarıdaki eser yoktu, bu yüzden burada (replace o birini kapalı hesaplamak için benim yolum 1628880.0senin ile dmesgzaman damgası):

perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'

2

dmesg | perl -pe 'use Unix::Uptime; s/^\[(.*)\]/localtime(time()-Unix::Uptime->uptime()+$1)/e'


2

Bunun şimdi eski olduğunu biliyorum ama şimdi dmesg, yerel saate göre saati göstermek için -e veya --reatime seçeneğine sahip.

root@bbs:/var/log# dmesg|tail -1
[50755952.379177] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB

root@bbs:/var/log# dmesg -e|tail -1
[Feb20 17:10] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.