在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中将其转换为人类合理的东西?例如,我想知道自那以来经过了多少秒。
答案 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的信息。