unix shell,tail -f来自最后一次出现的模式

时间:2016-10-05 15:35:55

标签: bash shell unix

我有非常大的日志文件,其中包含服务重启消息的日志。在使用外部命令启动服务重启后,我需要从最后一次出现的重启消息中截取此日志文件,并检查以下消息以确认正确的重启过程。我正在通过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>

2 个答案:

答案 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中反向搜索文件来做得更好。