/var/log/messages
, /var/log/syslog
ve diğer bazı günlük dosyaları, mutlak zaman içeren bir zaman damgası kullanır Jan 13 14:13:10
.
/var/log/Xorg.0.log
ve /var/log/dmesg
yanı çıktısı olarak $ dmesg
, bir biçim kullandığını görünüyor gibi
[50595.991610] malkovich: malkovich malkovich malkovich malkovich
Sanırım sayıların başlangıçtan bu yana saniye ve mikrosaniyeyi temsil ettiğini düşünüyorum.
Ancak, bu iki zaman damgası kümesini ilişkilendirme girişimim (çıktısını kullanarak uptime
) yaklaşık 5000 saniyelik bir tutarsızlık verdi.
Bu kabaca bilgisayarımın askıya alınma süresidir.
Dmesg ve Xorg tarafından kullanılan sayısal zaman damgalarını mutlak zaman damgalarına eşlemek için uygun bir yol var mı?
Güncelleme
Bunu anlamaya yönelik bir ön adım olarak ve umarım sorumu biraz daha açık hale getirmek için , zaman eğriliğini ayrıştırmak ve çıktılamak için bir Python betiği yazdım /var/log/syslog
. Benim makinemde ubuntu 10.10 çalıştıran bu dosya, hem dmesg zaman damgası hem de syslog zaman damgası ile damgalanmış çok sayıda çekirdek kaynaklı satır içeriyor. Komut dosyası, dosyadaki her satır için bir çekirdek zaman damgası içeren bir satır verir.
Kullanımı:
python syslogdriver.py /var/log/syslog | column -nts $'\t'
Çıkarılan çıktı (sütun tanımları için aşağıya bakın):
abs abs_since_boot rel_time rel_offset message
Jan 13 07:49:15 32842.1276569 32842.301498 0 malkovich malkovich
... rel_offset
araya giren tüm hatlar için 0'dır ...
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
kalan tüm satırlar için -5280'dir ...
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
... Son çizgiler biraz daha aşağıdan, yine de çıktı sonunun çok üstünde. Bazıları muhtemelen dmesg
askıya alınmadan önce dairesel tampon belleğe yazılmıştır ve sadece syslog
daha sonra yayılmıştır . Bu, hepsinin neden aynı syslog zaman damgasına sahip olduğunu açıklar.
Sütun tanımları:
abs
syslog tarafından kaydedilen zamandır.
abs_since_boot
içeriği /proc/uptime
ve değerine bağlı olarak, sistemin başlatılmasından bu yana geçen saniye cinsinden süredir time.time()
.
rel_time
çekirdek zaman damgasıdır.
rel_offset
abs_since_boot
ve arasındaki farktır rel_time
. syslog
Sadece saniye hassasiyetine sahip mutlak (yani- oluşturulmuş) zaman damgaları nedeniyle bir kerelik hataları önlemek için bu onlarca saniye yuvarlama . Aslında bunu yapmanın doğru yolu bu değil, çünkü gerçekten (sanırım ..) sadece 10 hataya neden olma şansının azalmasıyla sonuçlanıyor. Birinin daha iyi bir fikri varsa, lütfen bana bildirin.
Ayrıca syslog'un tarih biçimi hakkında bazı sorularım var; özellikle, bir yılın içinde ortaya çıkıp çıkmadığını merak ediyorum. Hayır, tahmin etmiyorum ve her durumda TFM'deki bu bilgiler konusunda kendime yardımcı olabilirim, ancak biri bilirse yararlı olur. Tabii ki, birinin sadece birkaç satır Perl kodunu patlatmak yerine, bu komut dosyasını gelecekte bir noktada kullandığını varsayalım.
Sonraki:
Bu yüzden, sizden biri tarafından bana hoşgeldin vahiyi verilmedikçe, bir sonraki adımım, belirli bir çekirdek zaman damgası için zaman eğriltmesi için bir işlev eklemek olacaktır. Mutlak bir zaman damgası almak için komut dosyasını bir veya bir dizi syslog dosyasını, bir çekirdek zaman damgasıyla birlikte besleyebilmeliyim. Sonra Xorg sorunlarımı hata ayıklamaya geri dönebilirim.
Freezing user space processes
bu uykudan önce açıkça yapılır.
[12345.6789]..
çekirdeğin yaydığı metne (ile başlayan ) mutlak zaman damgasını önekliyor, bu yüzden işleri doğru yapıyor , son yorumumda ele alınan sorunlara tabidir. Burada çekirdeğin gerçekten ne yapması gerektiğinden emin değilim; bu başlangıç-göreceli zaman damgalarının ne anlama geldiğine bağlıdır. Çalışma süresi (önyüklemeden bu yana geçen zamanın aksine) bazı bağlamlarda anlamlı olabilir. İdeal olarak, bu değerlerin her ikisinin de güvenilir bir kaydı olacaktır.
sort
, python betiği için +1, yıl, saat dilimi vb.