【发布时间】:2012-06-24 14:31:18
【问题描述】:
我想循环读取内核日志/var/log/messages 的最后三行。
for i in xrange(0,100):
# do_stuff()
file = open('/var/log/messages')
lines = file.readlines()[-3:]
# analyse_stuff()
file.close()
但我对这段代码有疑问:
[...]
1013477960613797 1013477960959759 1013477961174602
1013477960613797 1013477960959759 1013477961174602
1013477960613797 1013477960959759 1013477961174602
1013477960613797 1013477960959759 1013477961174602
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477973551967 1013477973773506 1013477977678559
1013477986756370 1013477990527612 1013477990834895
1013477986756370 1013477990527612 1013477990834895
1013477986756370 1013477990527612 1013477990834895
1013477986756370 1013477990527612 1013477990834895
1013477986756370 1013477990527612 1013477990834895
1013477986756370 1013477990527612 1013477990834895
1013477986756370 1013477990527612 1013477990834895
1013477986756370 1013477990527612 1013477990834895
[...]
如您所见,值会重复多次。
do_stuff() 执行一个二进制文件,它发出三个日志消息。
analyse_stuff() 将分析这三行并做 magic
我总是关闭文件并重新打开它,因为我认为这会解决问题,但事实并非如此。知道会发生什么吗?
【问题讨论】:
-
我可能会使用
tail,但我更喜欢直接在python中进行,因为脚本必须进行一些分析。这只是重要的 sn-p。 -
检查活动状态的tail recipe。
-
使用 for 循环,您打开日志文件 100 次并读取持续 3 行 100 次。我不知道为什么必须使用这样的循环。如果您需要一些延迟,只需使用 time.sleep()。