转换“jiffy”时间

时间:2014-01-23 12:14:06

标签: python datetime

在linux上,我在python中编写一个脚本来处理文件/proc/net/xt_recent/PORTSCAN,它看起来像这样:

src=123.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432
src=132.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432
src=231.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432

最后一栏(即4298265432)是“jiffy”格式的AFAIU时间。

如何在python中将其转换为人类合理的东西?例如,我想知道自那以来经过了多少秒。

1 个答案:

答案 0 :(得分:3)

为了转换jiffies,你必须首先找到HZ的内核常量值。您可以使用os.sysconf

执行此操作
import os

sc_clk_tck = os.sysconf_names['SC_CLK_TCK']
HZ = os.sysconf(sc_clk_tck)

从这里你想找到系统启动时间:

with open('/proc/stat') as f:
    for ln in f.readlines():
        if ln.startswith('btime'):
            btime = int(ln.split()[1])

获取此值并将其添加到您想要转换的jiffy值除以HZ

(packet_jiffy / HZ) + btime

您可以将此值传递给time.ctime和/或从time.time中减去它。

import os
import time

sc_clk_tck = os.sysconf_names['SC_CLK_TCK']
HZ = os.sysconf(sc_clk_tck)

with open('/proc/stat') as f:
    for ln in f.readlines():
        if ln.startswith('btime'):
            btime = ln.split()[1]


packet_time = (packet_jiffy / HZ) + btime
print time.ctime(packet_time)
print "Seconds ago %d" % (time.time() - packet_time)

post有更多关于转换jiffies的信息。