【问题标题】:BASH Linux exit read log until specific string [duplicate]BASH Linux退出读取日志,直到特定字符串[重复]
【发布时间】:2016-09-19 10:35:06
【问题描述】:

我必须阅读日志,直到收到“Server Startup”。

当我得到字符串“startup”时,我必须退出tail 命令并继续执行其余的脚本操作。

现在的语法是:

cd /opt/path/path/path
LOG_FILE=$(ls -ltr | tail -1 |awk '{print $9}')
tail -f $LOG_FILE

提前致谢

【问题讨论】:

  • 使用ls -lrt 在目录中查找最新文件不是一个好主意。你最新的文件名是什么包含空格?类似"latest file"

标签: linux string bash awk


【解决方案1】:
stdbuf -oL tail -f log.file | stdbuf -iL awk '/startup/ {print "Match found";exit}'

这将检查字符串startup,当找到它时,它将打印“找到匹配”,然后退出日志监控。 stdbuf 提供缓冲到 tail 和 awk 的行。

【讨论】:

  • 我建议使用stdbuf 强制tail 写入行缓冲和awk 读取stdin 行缓冲。否则,脚本将不得不等到 IO 缓冲区被刷新。像这样:stdbuf -oL tail -f log.file | stdbuf -iL awk ...
  • @hek2mgl,谢谢。指出点。
  • 感谢您的光临
猜你喜欢
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2014-10-17
  • 2018-02-28
相关资源
最近更新 更多