【问题标题】:Kill a bash process when a specific string is read from stdout从标准输出读取特定字符串时终止 bash 进程
【发布时间】:2012-09-24 04:24:14
【问题描述】:

我正在使用 tail 读取更新的日志文件,如果 grep 返回特定字符串,我希望退出循环。我不确定如何“以编程方式”退出或终止进程

有人有什么好主意吗? 这是一些示例脚本:

tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8"

谢谢:)

【问题讨论】:

标签: linux macos bash


【解决方案1】:

使用具有最大计数的grep

tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8" -m 1

【讨论】:

    【解决方案2】:

    你可以像这样有效地做到这一点:

    tail -f /var/log/{system.log,kernel.log} | awk '
      {print}
      /vendor: 0x22b8/ {exit}
    '
    

    awk 命令将在第一次看到您的字符串时退出。由于 SIGPIPE 机制,tail 命令将在下次尝试写入管道时被终止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2017-08-25
      • 2019-09-01
      相关资源
      最近更新 更多