Linux:如何对进程进行标准输出直到最后,但如果出现某些字符串,则停止并返回非零代码?



我们有一个运行测试的工具,但如果测试失败,则会返回错误代码。
该工具在开始通过 SSH 登录到自定义控制台(不是 bash(并发出命令后运行测试。在该调用中同时运行所有测试 测试的日志记录将转到文件。 该工具的输出大致为:

test1 [ok]
test2 Some message based on the failure
...

要停止构建,我们需要在输出中查找某些字符串。
输出在测试运行时显示。

我可以将整个输出捕获到一个文件中,最后失败。但是,一旦第一次测试失败,就会节省相当多的失败时间。

因此,我想要类似tee的东西,但如果找到该失败字符串,它也会杀死执行。或者,至少,它应该打印输出,如果找到字符串,则返回非零。

这在标准 Linux 工具包中可行吗?

我能想到的唯一解决方案是:

  1. 启动构建过程并将其输出cat到输出文件。
  2. 启动另一个监视此文件的脚本:一个循环,该循环每 X 秒迭代一次,以搜索文件中的禁止词。一旦它们出现,就终止构建过程(您可能需要一种方法来识别您的构建过程,例如 pid 文件或类似的东西(并清除该文件。

您甚至可以将这两个进程放在一个 shellscript 中,并在需要时使它们启动和停止。

相关内容

  • 没有找到相关文章

最新更新