/var/log/messages
, /var/log/syslog
और कुछ अन्य लॉग फ़ाइलों में टाइमस्टैम्प का उपयोग होता है, जिसमें एक पूर्ण समय होता है, जैसे Jan 13 14:13:10
।
/var/log/Xorg.0.log
और /var/log/dmesg
, साथ ही आउटपुट $ dmesg
, एक प्रारूप का उपयोग करता है जो दिखता है
[50595.991610] malkovich: malkovich malkovich malkovich malkovich
मैं अनुमान लगा रहा / इकट्ठा कर रहा हूं कि संख्याएँ स्टार्टअप के बाद से सेकंड और माइक्रोसेकंड का प्रतिनिधित्व करती हैं।
हालाँकि, टाइमस्टैम्प के इन दो सेटों (से आउटपुट का उपयोग करके uptime
) को सहसंबद्ध करने के मेरे प्रयास ने लगभग 5000 सेकंड की विसंगति दी।
यह लगभग उस समय की राशि है जब मेरे कंप्यूटर को निलंबित कर दिया गया था।
क्या damsg और Xorg द्वारा उपयोग किए गए संख्यात्मक टाइमस्टैम्प को पूर्ण टाइमस्टैम्प में मैप करने का एक सुविधाजनक तरीका है?
अपडेट करें
एक प्रारंभिक कदम के रूप में यह समझ में आ रहा है, और यह भी उम्मीद है कि मेरे सवाल को थोड़ा और स्पष्ट करने के लिए, मैंने समय को तिरछा करने और आउटपुट करने के लिए पायथन स्क्रिप्ट लिखी है /var/log/syslog
। मेरी मशीन पर, ubuntu 10.10 चल रही है, उस फ़ाइल में कई कर्नेल-उत्पत्ति वाली लाइनें हैं, जो dmesg टाइमस्टैम्प और सिसलॉग टाइमस्टैम्प दोनों के साथ मुहर लगी हैं। स्क्रिप्ट उस फ़ाइल में प्रत्येक पंक्ति के लिए एक लाइन आउटपुट करती है जिसमें कर्नेल टाइमस्टैम्प होता है।
उपयोग:
python syslogdriver.py /var/log/syslog | column -nts $'\t'
अतिरंजित आउटपुट (स्तंभ परिभाषाओं के लिए नीचे देखें):
abs abs_since_boot rel_time rel_offset message
Jan 13 07:49:15 32842.1276569 32842.301498 0 malkovich malkovich
... rel_offset
सभी हस्तक्षेप करने वाली लाइनों के लिए 0 है ...
Jan 13 09:55:14 40401.1276569 40401.306386 0 PM: Syncing filesystems ... done.
Jan 13 09:55:14 40401.1276569 40401.347469 0 PM: Preparing system for mem sleep
Jan 13 11:23:21 45688.1276569 40402.128198 -5280 Skipping EDID probe due to cached edid
Jan 13 11:23:21 45688.1276569 40402.729152 -5280 Freezing user space processes ... (elapsed 0.03 seconds) done.
Jan 13 11:23:21 45688.1276569 40402.760110 -5280 Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
Jan 13 11:23:21 45688.1276569 40402.776102 -5280 PM: Entering mem sleep
... rel_offset
सभी शेष लाइनों के लिए -5280 है ...
Jan 13 11:23:21 45688.1276569 40403.149074 -5280 ACPI: Preparing to enter system sleep state S3
Jan 13 11:23:21 45688.1276569 40403.149477 -5280 PM: Saving platform NVS memory
Jan 13 11:23:21 45688.1276569 40403.149495 -5280 Disabling non-boot CPUs ...
Jan 13 11:23:21 45688.1276569 40403.149495 -5280 Back to C!
Jan 13 11:23:21 45688.1276569 40403.149495 -5280 PM: Restoring platform NVS memory
Jan 13 11:23:21 45688.1276569 40403.151034 -5280 ACPI: Waking up from system sleep state S3
... अंतिम लाइनें थोड़ा और नीचे से हैं, फिर भी आउटपुट के अंत में अच्छी तरह से ऊपर हैं। संभवतः उनमें से कुछ को dmesg
निलंबित होने से पहले परिपत्र बफ़र के लिए लिखा गया था, और केवल syslog
बाद में प्रचारित किया गया था। यह बताता है कि क्यों सभी के पास एक ही syslog टाइमस्टैम्प है।
स्तंभ परिभाषाएँ:
abs
syslog द्वारा लॉग इन किया गया समय है।
abs_since_boot
की सामग्री /proc/uptime
और मूल्य के आधार पर सिस्टम स्टार्टअप के बाद से सेकंड में वही समय है time.time()
।
rel_time
कर्नेल टाइमस्टैम्प है।
rel_offset
के बीच अंतर है abs_since_boot
और rel_time
। मैं सेकंड के दसियों के लिए इसे राउंड कर रहा हूं ताकि पूर्ण (यानी syslog
-रंजित) टाइमस्टैम्प के कारण केवल एक सेकंड में होने वाली त्रुटियों से बचा जा सके । यह वास्तव में ऐसा करने का सही तरीका नहीं है, क्योंकि यह वास्तव में है (मुझे लगता है ..) केवल एक ऑफ-बाय -10 त्रुटि होने का एक छोटा मौका देता है। अगर किसी के पास बेहतर विचार है, तो कृपया मुझे बताएं।
मेरे पास syslog की दिनांक प्रारूप के बारे में कुछ प्रश्न हैं; विशेष रूप से, मैं सोच रहा था कि क्या एक साल कभी इसमें दिखाई देगा। मैं अनुमान लगा रहा हूं कि नहीं, और किसी भी स्थिति में टीएफएम में उस जानकारी के लिए खुद को सबसे अधिक मदद मिल सकती है, लेकिन अगर किसी को पता चलता है तो यह उपयोगी होगा। .., निश्चित रूप से, कि कोई इस लिपि का उपयोग भविष्य में किसी बिंदु पर करता है, बजाय इसके कि पर्ल कोड की कुछ पंक्तियों को तोड़ दिया जाए।
आगे:
इसलिए जब तक कि आप में से किसी के द्वारा आपका स्वागत नहीं किया जाता है, मेरा अगला कदम एक दिए गए कर्नेल टाइमस्टैम्प के लिए समय तिरछा पाने के लिए एक फ़ंक्शन जोड़ना होगा। मुझे स्क्रिप्ट को एक या एक सेट करने के लिए सक्षम होना चाहिए, एक सेट टाइमस्टैम्प प्राप्त करने के लिए, कर्नेल टाइमस्टैम्प के साथ। फिर मैं अपने Xorg मुद्दों पर डिबगिंग पर वापस आ सकता हूं, जो इस समय मुझसे बचते हैं।
Freezing user space processes
जो सोने से पहले स्पष्ट रूप से किया जाता है।
[12345.6789]..
कर्नेल द्वारा उत्सर्जित पाठ के लिए पूर्ण टाइमस्टैम्प (साथ शुरू होने वाला ) को उपसर्ग करता है , इसलिए यह सही तरीके से काम कर रहा है , मेरी पिछली टिप्पणी से संबोधित मुद्दों के अधीन। मुझे यकीन नहीं है कि वास्तव में यहाँ क्या कर्नेल होना चाहिए; यह उन स्टार्टअप-सापेक्ष टाइमस्टैम्प को इंगित करने के लिए क्या है पर निर्भर करता है। रनिंग टाइम (बूट के बाद से समय के विपरीत) कुछ संदर्भों में सार्थक हो सकता है। मुझे लगता है कि आदर्श रूप में उन दोनों मूल्यों का एक विश्वसनीय रिकॉर्ड होगा।
sort
अजगर स्क्रिप्ट के लिए वर्ष, समयक्षेत्र, आदि +1 कर सकते हैं ।