如果 Linux 命令在一分钟内没有输出某个字符串,如何使它失败?

How to fail a Linux command if it doesn't output a certain string within a minute?

我正在使用 AWS Codebuild 设置自托管 Github Actions 运行ner。在我的主要构建部分,我只是 运行ning 命令 ./run.sh,这会启动自托管 运行ner,侦听作业,然后选择特定的作业。在某些情况下,这些实际上并没有最终找到工作,只是坐在那里听 30 分钟的工作,直到 Codebuild 超时。

我想做的是 运行 这个命令,但是检查 运行ning 的第一分钟内,它输出一个包含 Running job: 的字符串。如果是这样,很好,继续 运行ning run.sh 命令直到它完成。如果没有,退出命令并完成代码构建。

这可以吗?我对 Linux 命令不是很熟悉。

我可以使用以下方法将其添加到我的构建规范中:

build:
  commands:
    - |
      cat >> expect.sh <<EOL
      #!/usr/bin/expect -f
      set timeout 30
      spawn ./run.sh
      expect {
        "Running job:" { puts "Job found"; set timeout -1; exp_continue }
        timeout { puts "Timed out"; exit 1 }
        eof { puts "End of command"; exit 0 }
      }
      EOL
    - expect -f expect.sh