加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – ‘grep -q’没有退出’tail -f’

发布时间:2020-12-13 18:30:22 所属栏目:Linux 来源:网络整理
导读:我正在尝试实现一个等待日志文件中的特定消息的脚本.记录消息后,我想继续脚本. 这是我用tail -f和grep -q尝试的东西: # tail -f logfile | grep -q 'Message to continue' grep永远不会退出,所以即使文件中记录了“要继续的消息”,它也会永远等待. 当我没有
我正在尝试实现一个等待日志文件中的特定消息的脚本.记录消息后,我想继续脚本.

这是我用tail -f和grep -q尝试的东西:

# tail -f logfile | grep -q 'Message to continue'

grep永远不会退出,所以即使文件中记录了“要继续的消息”,它也会永远等待.

当我没有-f运行它似乎工作正常.

解决方法

tail -f将读取文件并显示稍后添加的行,它将不会终止(除非发送SIGTERM之类的信号). grep不是这里的阻塞部分,tail -f是. grep将从管道中读取,直到它被关闭,但它绝不是因为tail -f没有退出并保持管道打开.

您的问题的解决方案可能是(未经过测试且很可能表现不佳):

tail -f logfile | while read line; do
  echo $line | grep -q 'find me to quit' && break;
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读