/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 วินาที
นี่เป็นระยะเวลาโดยประมาณที่คอมพิวเตอร์ของฉันถูกระงับ
มีวิธีที่สะดวกในการแมปการประทับเวลาตัวเลขที่ใช้โดย dmesg และ Xorg ในการลงเวลาที่แน่นอนหรือไม่?
ปรับปรุง
เป็นขั้นตอนเบื้องต้นในการคิดออกและหวังว่าจะทำให้คำถามของฉันชัดเจนยิ่งขึ้นฉันได้เขียนสคริปต์ Pythonเพื่อแยกวิเคราะห์/var/log/syslog
และแสดงเวลาที่เบี่ยงเบน บนเครื่องของฉันรันอูบุนตู 10.10, ไฟล์นั้นมีหลายบรรทัดเคอร์เนลที่มาจากการประทับทั้ง dmesg timestamp และ syslog timestamp สคริปต์เอาต์พุตบรรทัดสำหรับแต่ละบรรทัดในไฟล์นั้นซึ่งมีเวลาประทับเคอร์เนล
การใช้งาน:
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; โดยเฉพาะอย่างยิ่งฉันสงสัยว่าปีที่เคยปรากฏในนั้น ฉันคาดเดาไม่ได้และในกรณีใด ๆ อาจช่วยตัวเองให้ได้ข้อมูลใน TFM แต่ถ้ามีคนรู้ว่ามันจะมีประโยชน์ .. แน่นอนว่ามีบางคนใช้สคริปต์นี้ในอนาคตในบางจุดแทนที่จะใช้โค้ด Perl สองสามบรรทัด
ต่อไป:
ดังนั้นหากมีการเปิดเผยต้อนรับบางอย่างจากฉันที่ได้รับจากคุณขั้นตอนต่อไปของฉันคือการเพิ่มฟังก์ชั่นเพื่อให้ได้เวลาที่แม่นยำสำหรับการประทับเวลาเคอร์เนลที่กำหนด ฉันควรจะสามารถป้อนสคริปต์หนึ่งหรือชุดของ syslogs พร้อมกับเคอร์เนลการประทับเวลาเพื่อให้ได้เวลาประทับที่แน่นอน จากนั้นฉันจะกลับไปแก้จุดบกพร่อง Xorg ของฉันซึ่งหนีฉันไปในตอนนี้
Freezing user space processes
อย่างชัดเจนก่อนการนอนหลับ
[12345.6789]..
) ที่ปล่อยออกมาจากเคอร์เนลดังนั้นมันจึงทำสิ่งต่าง ๆ ได้อย่างถูกต้อง ขึ้นอยู่กับปัญหาที่ได้รับการแก้ไขโดยความคิดเห็นล่าสุดของฉัน ฉันไม่แน่ใจว่าเคอร์เนลควรทำอะไรที่นี่ ขึ้นอยู่กับความหมายของการประทับเวลาที่สัมพันธ์กับการเริ่มต้นเหล่านั้นเพื่อระบุ เวลาทำงาน (ตรงข้ามกับเวลาตั้งแต่บูต) อาจมีความหมายในบางบริบท ฉันเดาว่าคงมีบันทึกที่เชื่อถือได้ของค่าทั้งสองนั้น
sort
มีปีเขตเวลาและอื่น ๆ +1 สำหรับสคริปต์ python