2015-02-01 3 views
2

Этот вопрос не, связанный с проблемой паузы/резюме!dmesg -T приводит к несогласованности по времени

Для того же события 'dmesg' всегда показывает одну и ту же метку времени, например.

[31765279.760248] 

Однако при использовании 'dmesg -T', для одного и того же события оно показывает несколько другой отсчет секунд, например. вызов dmesg -T | grep something | tail -1 дважды приводит:

[Thu Jan 29 01:12:39 2015] event details... 
[Thu Jan 29 01:12:38 2015] event details... 

Мне нужно сравнить события с историей и актом о новых событиях. Однако это отличие делает невозможным использование простого сравнения строк.

Как работа вокруг, я зажимаю секунды из строк, прежде чем сравнивать их. Я могу сделать это в этом случае, так как события, которые я фильтрую, происходят не чаще, чем раз в 5 минут.

Кто-нибудь знает, почему эта неточность происходит?

uname -a => Linux (hostname) 3.5.0-45-generiC#68~precise1-Ubuntu SMP Wed Dec 4 16:18:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 
+0

У меня нет объяснений несогласованности, которую вы видите, но разрешите мне глупый вопрос: почему бы вам не сделать сравнение по необработанному значению и преобразовать его в человеко-читаемый вручную позже, если это необходимо? – tink

+0

Я ленивый :) Я знаю, что есть несколько обходных решений, и я использую один, но мне любопытно узнать причину. Спасибо за быстрый ответ –

ответ

0

Эти временные метки преобразуются в реальное время путем добавления их к времени загрузки системы. Если система подошла к 1491516481.480856282, и вы добавите к ней дробное смещение, иногда вы увидите одну дополнительную полную секунду.

Не проверял код, но вполне уверен, что причина. В Convert dmesg timestamp to custom date format есть немного больше информации, включая ответ, который я написал.

Смежные вопросы