सवाल 'Dmesg' समय प्रारूप को 'वास्तविक' समय प्रारूप में कैसे परिवर्तित करें


मेरे पास यह लॉग प्रविष्टि है (उदाहरण के लिए) dmesg उत्पादन:

[600711.395348] do_trap: 6 callbacks suppressed

क्या इस घटना को खुश करने के लिए इस 'dmesg' समय को 'असली' समय में बदलने की संभावना है?


36
2018-03-05 08:31


मूल




जवाब:


ऐसा लगता है कि इसे हाल ही में क्वांटल (12.10) के लिए लागू किया गया था: देखें http://brainstorm.ubuntu.com/idea/17829/ ।

मूल रूप से, dmesg एक नया स्विच होने की सूचना दी गई है -T, --ctime


संपादित करें। इग्नासिओ के जवाब पर एक और विस्तार के रूप में, यहाँ पुराने सिस्टम पर dmesg आउटपुट बढ़ाने के लिए कुछ स्क्रिप्ट हैं।

(नोट: वहां दिखाए गए कोड के पायथन संस्करण के लिए, कोई प्रतिस्थापित करना चाहता है &lt; तथा &gt; वापस <> इसे फिर से प्रयोग करने के लिए। )


अंत में, एक मूल्य के लिए 600711.395348 कोई कर सकता है

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

और घटना की तारीख और समय प्राप्त करें।

(कृपया ध्यान दें कि राउंड-ऑफ त्रुटियों के कारण अंतिम दूसरा अंक शायद सटीक नहीं होगा।)।

संपादित करें (2): कृपया ध्यान दें कि - नीचे की टिप्पणी के अनुसार, - यह केवल तभी काम करेगा जब मशीन हाइबरनेटेड नहीं थी। (उस स्थिति में, कोई बेहतर रूप से देखेंगे syslog पर विन्यास /etc/*syslog* और उचित फाइलों की जांच करें। यह भी देखें: dmesg बनाम / var / संदेश । )


50
2018-01-24 02:27



और, एक अतिरिक्त बोनस के रूप में, यदि मशीन को कभी निलंबित कर दिया गया है, तो आप पूरी तरह से बर्बाद हो जाते हैं, क्योंकि सोए गए समय के लिए जिम्मेदार नहीं है। - womble♦
Womble की टिप्पणी सुपर अपमानजनक है! यदि लैपटॉप को हाइबरनेट करता है या स्टैंडबाय में सेट किया जाता है तो यह गलत समय दिखाएगा। वास्तविक फ़ाइल देखने के लिए आपको /var/log/kern.log फ़ाइल का उपयोग करना चाहिए। - oligofren


Ignacio के जवाब पर विस्तार करने के लिए, प्रविष्टियों में निहित है dmesg syslog के माध्यम से सिस्टम पर कहीं और भी लॉग इन किया जाता है, जो आपको "असली" टाइमस्टैम्प देगा। जब तक उबंटू ने डेबियन-सेट डिफ़ॉल्ट को बदल दिया है, तो लॉग प्रविष्टियां होनी चाहिए /var/log/kern.log


16
2018-03-05 08:42



सेंट ओएस 5 और 6 पर, लॉग प्रविष्टि / var / log / संदेशों में है। - emerino


कर्नेल स्टार्टअप के बाद dmesg में दिया गया समय सेकेंड में है। तो, कर्नेल चलने शुरू होने पर बस उस सेकंड को जोड़ें (संकेत: अपटाइम)।


9
2018-03-05 08:37



यह केवल तभी काम करेगा यदि आप ऐसे सिस्टम का उपयोग कर रहे हैं जो स्टैंडबाय में कभी नहीं जाता है। अन्यथा आपको लॉग का उपयोग करने की आवश्यकता है। - oligofren


व्यस्त बॉक्स पर, उपरोक्त 3 लाइनर काम नहीं कर पाए, इसलिए यहां एक गणना करने का मेरा तरीका है (प्रतिस्थापित करें 1628880.0 आपके साथ dmesg टाइमस्टैम्प):

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

1
2017-10-06 17:37





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


1
2018-01-09 10:33





मुझे पता है कि यह अब पुराना है लेकिन dmesg अब स्थानीय समय में समय प्रदर्शित करने के लिए अंतर्निहित या अंतर्निहित विकल्प है।

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

1
2018-02-22 09:26