用于打印dmesg/kmsg/printk时间戳的实用程序,考虑到漂移。

printk-timestamp-converter的Python项目详细描述


用于查看本地时间和日期、UTC或epoch秒中的kmsg/printk/dmesg时间戳的实用程序,该时间戳由引起偏移。

printk时钟与本地时钟(一个ntp馈送)的偏移量通常很大。如果直接转换,这可能会导致完全不同和不正确的值(比如某些DMESG上的DMESG-T)。这个应用程序支持记录和标记漂移,并使用它来计算更精确的时间戳。

为什么不选择“dmesg-t”

如前所述,dmesg-t与dmesg_format_dates–drift=0相同,并且随着时间的推移变得不准确,因为时钟周期受到频率缩放等的影响。

因此,建议有一个cron作业,它运行printk_mark_drift如下所述,可能每隔半天运行一次,以保持事情的准确性。或多或少取决于所需的精度和系统的平均漂移。

您可以使用dmesg_get_drifts应用程序来显示所有当前标记的漂移,以判断系统时钟有多不准确。

样品

下面是一个示例,它显示了可能会潜入的不精确性:

首先,说明dmesg不能处理printk漂移

[cmd]$ date; sudo bash -c ‘echo “Hello World” > /dev/kmsg’; dmesg -T | grep ‘Hello World’ | tail -n1

Wed Sep 9 01:13:56 EDT 2015

[Wed Sep 9 01:14:31 2015] Hello World

接下来,显示dmesg格式的日期确实与printk drift一起工作

[cmd]$ date; sudo bash -c ‘echo “Hello World” > /dev/kmsg’; ./dmesg_format_dates | grep ‘Hello World’ | tail -n1

Wed Sep 9 01:14:11 EDT 2015

[Wed Sep 9 01:14:11 2015] Hello World

应用程序

dmesg_格式的日期

此应用程序运行“dmesg”(或者您可以通过管道输入预先记录的dmesg,例如从日志中),并使用计算的偏移量来导出准确的时间戳。

运行此命令以输出内核日志,将printk时间戳替换为计算的时间戳(以多种格式之一),同时考虑到漂移。

输出

支持的输出模式有:

  • local time(默认值)-l或–local。标准“CTIME”格式,包括本地时区信息
  • utc-u或–utc。以UTC(无时区,也称为GMT或ZULU)表示的标准“CTIME”格式
  • epoch-e或–epoch。Unix纪元时间。以1970年1月1日起的秒数表示

子秒

本地时间和UTC的输出采用CTIME格式,分辨率为1秒。

您还可以传递-s-subsec以向输出添加子秒。

这将输出2秒的有效位数(精度+-10ms),这是从实时时钟中获得的最大值。

epoch模式总是输出子秒。

printk_mark_drift

将漂移标记添加到kmsg日志。这些是用来计算漂移的。你拥有的这些越多,你的时间戳就越精确。

当使用dmesg_格式的日期时,您应该考虑让cron作业每隔几个小时标记一次日志,以达到第二个精度

dmesg_get_漂移

此应用程序将显示DMESG日志中的偏移量(时间戳,时钟在该点偏移了多少)。

使用此项分析机器漂移的程度,以确定标记漂移的频率(以获得准确的时间戳)

printk_time_convert

此应用程序采用单个时间戳并将其转换为本地CTIME、UTC CTIME或Epoch时间戳。如果最近的一个不可用,它将添加一个漂移注释。

输出

printk_time_convert的输出模式与dmesg_format_dates相同。请参阅上面的使用选项,或–帮助。

如何配置kmsg以记录时间戳?

将/sys/module/printk/parameters/time的值设置为“y”(e.x.echo“y”>;/sys/module/printk/parameters/time)

模块

这个包提供printk_timestamp_转换器,这是一个可以直接使用的python模块。

侏儒C文档在这里提供:http://htmlpreview.github.io/?https://github.com/kata198/printk-timestamp-formatter/blob/master/doc/printk_timestamp_converter.html

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Selenium Web驱动程序。负载策略不稳定   JAVAsql。SQLException:没有合适的驱动程序无法创建“oracle”类的JDBC驱动程序。jdbc。驾驶员用于连接URL的OracleDriver   java谷歌地图“优化路径点”如何解决旅行推销员的问题?   java这段代码可能会造成潜在的内存泄漏吗?   java更改JCombobox的高度   java如何清除jtable中的数据   JavaHadoop:错误安全性。UserGroupInformation:MapReduce程序中的PriviledgedActionException   java如何将sonarlint添加到gradle任务中?   性能为什么Java排序优于原语计数排序   java Spring属性PlaceHolderConfigure从数据库加载   java从泛型获取类不起作用   java Spring@Transactional传播属性   java试图拥有主菜单和子菜单类   XSL的java后处理步骤   java第一个字母和最后一个字母、第二个字母和倒数第二个字母之间的差值之和,依此类推,直到单词的中心   switch语句在Java中的下一个出发点   java 安卓如何在OnBackpress()时设置viewpager的特定项目位置?