我有非常大的日志文件,其中包含服务重启消息的日志。在使用外部命令启动服务重启后,我需要从最后一次出现的重启消息中截取此日志文件,并检查以下消息以确认正确的重启过程。我正在通过python分析消息,所以只查找最后一次出现并跟踪所需文件,然后逐行检查输出,并在读取我需要的所有内容时关闭连接。
.... # lots of previous data
[timestamp] previous message
[timestamp] Rebooting... # from tis point i need to track messages
[timestamp] doing thing
[timestamp] doing other thing
[timestamp] doing final thing # final point, reboot successful
[timestamp] service activity message #
我该如何进行拖尾?
tail -f <from last Rebooting... message>
答案 0 :(得分:2)
给出一个宽松的缓冲值,反向,提取,反转
return jsonify(options=options)
或,将$ tail -1000 file | tac | awk '1,/Rebooting/' | tac
脚本替换为awk
答案 1 :(得分:1)
也许是这样的:
tail -fn +$(awk '/Rebooting/ { line = NR } END { print(line) }' log) log
使用awk
查找最后一次出现的模式的行号,然后从该行开始尾部。
但仍会扫描整个文件。
如果你真的是从python那里做的,你可以通过直接在python中反向搜索文件来做得更好。